1. Load all libraries required

library(readxl)
library(tidyverse)


library('dplyr')
library('readxl')
library(ggplot2)
library(dplyr) # required by custom function outlier_removal()
library(jmv) # ancova()
library(ggplot2) # ggplot()
library(gridExtra) # grid.arrange()

2. Pre analysis: Data import and cleaning

manual_FACE<- read_excel('FACE_Thesis_Manual.xlsx')
manual_FACE <- data.frame(manual_FACE)

colnames(manual_FACE)
 [1] "CSF"            "Diag_CSF"       "Analysis_ID"    "Diag_CSF_1_MCI" "Sex_1m_2f"     
 [6] "Age_LP"         "BMI"            "APOE_Status"    "A_1pos_0neg"    "T_1pos_0neg"   
[11] "N_1pos_0neg"    "AT"             "AN"             "YKL40_ng_mL"    "sAxl_ng_mL"    
[16] "Tyro3_pg_mL"    "CRP_pg_mL"      "sICAM1_ng_mL"   "sVCAM1_ng_mL"   "sTREM2_pg_mL"  
[21] "C1q_ng_mL"      "C3_ng_mL"       "C4_ng_mL"       "Factor.B_ng_mL" "Factor.H_ng_mL"
[26] "MIF_pg_mL"      "TNFR1_ng_mL"    "TNFR2_ng_mL"   
FC_thesis_manual <- subset(manual_FACE, select = c(CSF,
                                                   YKL40_ng_mL, sAxl_ng_mL, Tyro3_pg_mL,
                                                   sTREM2_pg_mL, C1q_ng_mL, C3_ng_mL, C4_ng_mL,
                                                   Factor.B_ng_mL, Factor.H_ng_mL, MIF_pg_mL,
                                                   TNFR1_ng_mL, TNFR2_ng_mL, sICAM1_ng_mL, sVCAM1_ng_mL,
                                                   CRP_pg_mL, Age_LP, Sex_1m_2f, BMI, APOE_Status, 
                                                   Diag_CSF, A_1pos_0neg, T_1pos_0neg, N_1pos_0neg, AT, AN))

FC_thesis_manual$A_N_cat <- factor(ifelse(FC_thesis_manual$AN == 0,
                                    "A-T-",
                                    ifelse(FC_thesis_manual$AN == 2,
                                           "A+T-",
                                           ifelse(FC_thesis_manual$AN == 1,
                                                  "A-T+",
                                                  "A+T+"))),
                             levels = c("A-T-", "A-T+", "A+T-", "A+T+"))
table(FC_thesis_manual$A_N_cat)

A-T- A-T+ A+T- A+T+ 
 314  112  152  204 
FC_thesis_manual$Diag_CSF <- factor(FC_thesis_manual$Diag_CSF,
                                   levels = c("SCD", "MCI"))
table(FC_thesis_manual$A_N_cat)

A-T- A-T+ A+T- A+T+ 
 314  112  152  204 
table(FC_thesis_manual$Diag_CSF)

SCD MCI 
 59 723 
which(FC_thesis_manual$Diag_CSF == "SCD")
 [1]  50  58  63  68 177 183 184 196 202 210 219 246 356 382 387 388 391 392 393 404 409 465
[23] 484 498 499 520 587 630 632 633 635 636 640 641 644 648 649 652 655 657 660 662 663 669
[45] 670 672 675 676 679 681 683 685 686 687 688 689 765 766 767
which(FC_thesis_manual$Diag_CSF == "SCD" & 
        FC_thesis_manual$N_1pos_0neg == 0)
 [1]  50  58  63  68 177 183 184 196 202 210 219 246 356 387 388 391 392 393 404 409 465 484
[23] 498 499 520 587 630 633 635 636 641 644 648 649 652 655 657 660 662 669 670 672 675 676
[45] 683 686 687 688 689 765 766 767
which(FC_thesis_manual$Diag_CSF == "SCD" & 
        FC_thesis_manual$N_1pos_0neg == 1)
[1] 382 632 640 663 679 681 685
FC_thesis_manual$clinical_N_cat <- factor(ifelse(FC_thesis_manual$Diag_CSF == "SCD" & 
                                                                 FC_thesis_manual$N_1pos_0neg == 0,
                                                               "SCD_T-",
                                                               ifelse(FC_thesis_manual$Diag_CSF == "SCD" & 
                                                                        FC_thesis_manual$N_1pos_0neg == 1,
                                                                      "SCD_T+",
                                                                      ifelse(FC_thesis_manual$Diag_CSF == "MCI" & 
                                                                               FC_thesis_manual$N_1pos_0neg == 0,
                                                                             "MCI_T-",
                                                                             ifelse(FC_thesis_manual$Diag_CSF == "MCI" & 
                                                                                      FC_thesis_manual$N_1pos_0neg == 1,
                                                                                    "MCI_T+",'others')))),
                                          levels = c('SCD_T-', 'SCD_T+', "MCI_T-", "MCI_T+"))
table(FC_thesis_manual$clinical_N_cat)

SCD_T- SCD_T+ MCI_T- MCI_T+ 
    52      7    414    309 

Outlier removal function Higher than or less than 3 standard deviations

outlier_removal <- function(df) {
  find.outlier <- function(df) {
    if(!is.numeric(df)) {
      df
    }
    else {
      arith.mean <- mean(df, na.rm = TRUE)
      st.dev <- sd(df, na.rm = TRUE)
      df[which(df > (arith.mean + 3*st.dev) | df < (arith.mean - 3*st.dev))] <- NA
      df
    }
  }
  df %>% dplyr::mutate_all(find.outlier)
}

Removed outliers

FC_thesis_manual_clean <- outlier_removal(FC_thesis_manual[1:16])

Check for merge outlier removed columns

dim(FC_thesis_manual_clean)
[1] 782  16
FC_thesis_m <- merge(FC_thesis_manual_clean,
                     FC_thesis_manual[c(1, 17:ncol(FC_thesis_manual))],
                          by = "CSF")
dim(FC_thesis_m)
[1] 782  28

Did not Omit NAs

table(FC_thesis_m$A_N_cat)

A-T- A-T+ A+T- A+T+ 
 314  112  152  204 
table(FC_thesis_m$Diag)

SCD MCI 
 59 723 
table(FC_thesis_m$clinical_N_cat)

SCD_T- SCD_T+ MCI_T- MCI_T+ 
    52      7    414    309 
colnames(FC_thesis_m)
 [1] "CSF"            "YKL40_ng_mL"    "sAxl_ng_mL"     "Tyro3_pg_mL"    "sTREM2_pg_mL"  
 [6] "C1q_ng_mL"      "C3_ng_mL"       "C4_ng_mL"       "Factor.B_ng_mL" "Factor.H_ng_mL"
[11] "MIF_pg_mL"      "TNFR1_ng_mL"    "TNFR2_ng_mL"    "sICAM1_ng_mL"   "sVCAM1_ng_mL"  
[16] "CRP_pg_mL"      "Age_LP"         "Sex_1m_2f"      "BMI"            "APOE_Status"   
[21] "Diag_CSF"       "A_1pos_0neg"    "T_1pos_0neg"    "N_1pos_0neg"    "AT"            
[26] "AN"             "A_N_cat"        "clinical_N_cat"
FC_thesis_m$BMI <- as.numeric(as.character(FC_thesis_m$BMI)) 
colnames(FC_thesis_m)[colnames(FC_thesis_m) == 'Age_LP'] <- 'Age'
colnames(FC_thesis_m)[colnames(FC_thesis_m) == 'Sex_1m_2f'] <- 'sex'
colnames(FC_thesis_m)[colnames(FC_thesis_m) == 'BMI'] <- 'bmi'
colnames(FC_thesis_m)[colnames(FC_thesis_m) == 'sAxl_ng_mL'] <- 'AXL_ng_ml'
colnames(FC_thesis_m)[colnames(FC_thesis_m) == 'sTREM2_pg_mL'] <- 'TREM2_pg_ml'
colnames(FC_thesis_m)[colnames(FC_thesis_m) == 'Factor.B_ng_mL'] <- 'Factor_B_ng_ml'
colnames(FC_thesis_m)[colnames(FC_thesis_m) == 'Factor.H_ng_mL'] <- 'Factor_H_ng_ml'
colnames(FC_thesis_m)[colnames(FC_thesis_m) == 'sICAM1_ng_mL'] <- 'ICAM1_ng_mL'
colnames(FC_thesis_m)[colnames(FC_thesis_m) == 'sVCAM1_ng_mL'] <- 'VCAM1_ng_mL'
colnames(FC_thesis_m)[colnames(FC_thesis_m) == 'YKL40_ng_mL'] <- 'YKL40_ng_ml'
colnames(FC_thesis_m)[colnames(FC_thesis_m) == 'C1q_ng_mL'] <- 'C1q_ng_ml'
colnames(FC_thesis_m)[colnames(FC_thesis_m) == 'C3_ng_mL'] <- 'C3_ng_ml'
colnames(FC_thesis_m)[colnames(FC_thesis_m) == 'C4_ng_mL'] <- 'C4_ng_ml'
colnames(FC_thesis_m)[colnames(FC_thesis_m) == 'MIF_pg_mL'] <- 'MIF_pg_ml'
colnames(FC_thesis_m)[colnames(FC_thesis_m) == 'TNFR1_ng_mL'] <- 'TNFR1_ng_ml'
colnames(FC_thesis_m)[colnames(FC_thesis_m) == 'TNFR2_ng_mL'] <- 'TNFR2_ng_ml'
colnames(FC_thesis_m)[colnames(FC_thesis_m) == 'CRP_pg_mL'] <- 'CRP_pg_ml'
colnames(FC_thesis_m)[colnames(FC_thesis_m) == 'Tyro3_pg_mL'] <- 'Tyro3_pg_ml'
colnames(FC_thesis_m)[colnames(FC_thesis_m) == 'APOE_Status'] <- 'E4_Positive'
colnames(FC_thesis_m)[colnames(FC_thesis_m) == 'Diag_CSF'] <- 'Diag'
colnames(FC_thesis_m)
 [1] "CSF"            "YKL40_ng_ml"    "AXL_ng_ml"      "Tyro3_pg_ml"    "TREM2_pg_ml"   
 [6] "C1q_ng_ml"      "C3_ng_ml"       "C4_ng_ml"       "Factor_B_ng_ml" "Factor_H_ng_ml"
[11] "MIF_pg_ml"      "TNFR1_ng_ml"    "TNFR2_ng_ml"    "ICAM1_ng_mL"    "VCAM1_ng_mL"   
[16] "CRP_pg_ml"      "Age"            "sex"            "bmi"            "E4_Positive"   
[21] "Diag"           "A_1pos_0neg"    "T_1pos_0neg"    "N_1pos_0neg"    "AT"            
[26] "AN"             "A_N_cat"        "clinical_N_cat"

Data is ready for analysis

3. AT scheme

3.1. YKL40_AT

(YKL40_A_T_plot <- ggplot(FC_thesis_m,
                          aes(x = A_N_cat, y = YKL40_ng_ml, 
                              colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "YKL40 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,1200, by = 200), limits = c(0,1200)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 9 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 9 rows containing missing values (`geom_point()`).

ancova(formula = YKL40_ng_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = YKL40_ng_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - YKL40_ng_ml                                                                   
 ────────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square     F               p            
 ────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat          698977.16500      3    232992.38833    35.425648399    < .0000001   
   Age              474001.76539      1    474001.76539    72.070250884    < .0000001   
   sex                4213.82493      1      4213.82493     0.640696811     0.4238036   
   bmi                  19.76457      1        19.76457     0.003005131     0.9563025   
   E4_Positive          39.62297      1        39.62297     0.006024529     0.9381602   
   Residuals       3623894.31875    551      6576.94069                                 
 ────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                       
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE           df          t            p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+             -87.02058    10.969550    551.0000    -7.932922    < .0000001   
              -    A+T-              16.05548    10.718645    551.0000     1.497903       0.8083873   
              -    A+T+             -61.86192     9.996186    551.0000    -6.188553    < .0000001   
   A-T+       -    A+T-             103.07607    12.674970    551.0000     8.132253    < .0000001   
              -    A+T+              25.15866    11.574154    551.0000     2.173694       0.1809193   
   A+T-       -    A+T+             -77.91741    11.204260    551.0000    -6.954266    < .0000001   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(YKL40_ng_ml, na.rm = TRUE), Std=sd(YKL40_ng_ml, na.rm = TRUE),
            Max=max(YKL40_ng_ml, na.rm = TRUE), Min=min(YKL40_ng_ml, na.rm = TRUE))
NA

3.2. AXL_AT

(AXL_A_T_plot <- ggplot(FC_thesis_m,
                          aes(x = A_N_cat, y = AXL_ng_ml, 
                              colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "AXL (ng/mL)") +
    scale_y_continuous(breaks = seq(0,50, by = 10), limits = c(0,50)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 6 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 6 rows containing missing values (`geom_point()`).

ancova(formula = AXL_ng_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = AXL_ng_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - AXL_ng_ml                                                                    
 ───────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square     F              p            
 ───────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat          3090.8590183      3    1030.2863394    42.19276784    < .0000001   
   Age                 3.8008723      1       3.8008723     0.15565510     0.6933408   
   sex                31.2567628      1      31.2567628     1.28004156     0.2583817   
   bmi                23.6264745      1      23.6264745     0.96756243     0.3257190   
   E4_Positive         0.5278767      1       0.5278767     0.02161785     0.8831618   
   Residuals       13503.4598322    553      24.4185530                                
 ───────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                       
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE           df          t            p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+             -5.742173    0.6695329    553.0000    -8.576386    < .0000001   
              -    A+T-              2.573490    0.6531054    553.0000     3.940390       0.0005506   
              -    A+T+             -1.712757    0.6088044    553.0000    -2.813313       0.0304666   
   A-T+       -    A+T-              8.315663    0.7706059    553.0000    10.791071    < .0000001   
              -    A+T+              4.029415    0.6999810    553.0000     5.756464    < .0000001   
   A+T-       -    A+T+             -4.286248    0.6820812    553.0000    -6.284072    < .0000001   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(AXL_ng_ml, na.rm = TRUE), Std=sd(AXL_ng_ml, na.rm = TRUE),
            Max=max(AXL_ng_ml, na.rm = TRUE), Min=min(AXL_ng_ml, na.rm = TRUE))
NA

3.3. Tyro3_AT

(Tyro3_A_T_plot <- ggplot(FC_thesis_m,
                        aes(x = A_N_cat, y = Tyro3_pg_ml, 
                            colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Tyro3 (pg/mL)") +
    scale_y_continuous(breaks = seq(0,12000, by = 2000), limits = c(0,12000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 7 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 7 rows containing missing values (`geom_point()`).

ancova(formula = Tyro3_pg_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = Tyro3_pg_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Tyro3_pg_ml                                                                
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p            
 ─────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat           1.282562e+8      3    4.275207e+7    53.9922980    < .0000001   
   Age                 1127977.2      1      1127977.2     1.4245409     0.2331701   
   sex                  111055.0      1       111055.0     0.1402532     0.7081733   
   bmi                  263468.3      1       263468.3     0.3327384     0.5642862   
   E4_Positive          960565.2      1       960565.2     1.2131136     0.2711964   
   Residuals         4.370835e+8    552       791818.0                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                      
 ─────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE          df          t            p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+            -1104.2657    119.2019    552.0000    -9.263827    < .0000001   
              -    A+T-              562.3025    117.6865    552.0000     4.777970       0.0000136   
              -    A+T+             -423.4040    109.8205    552.0000    -3.855417       0.0007748   
   A-T+       -    A+T-             1666.5682    138.0422    552.0000    12.072889    < .0000001   
              -    A+T+              680.8617    125.5639    552.0000     5.422433       0.0000005   
   A+T-       -    A+T+             -985.7065    123.1296    552.0000    -8.005437    < .0000001   
 ─────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(Tyro3_pg_ml, na.rm = TRUE), Std=sd(Tyro3_pg_ml, na.rm = TRUE),
            Max=max(Tyro3_pg_ml, na.rm = TRUE), Min=min(Tyro3_pg_ml, na.rm = TRUE))

3.4. TREM2_AT

(TREM2_A_T_plot <- ggplot(FC_thesis_m,
                          aes(x = A_N_cat, y = TREM2_pg_ml, 
                              colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TREM2 (pg/mL)") +
    scale_y_continuous(breaks = seq(0,14000, by = 2000), limits = c(0,14000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 9 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 9 rows containing missing values (`geom_point()`).

ancova(formula = TREM2_pg_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = TREM2_pg_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TREM2_pg_ml                                                                
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p            
 ─────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat           1.535695e+8      3    5.118984e+7    18.8146773    < .0000001   
   Age               6.920858e+7      1    6.920858e+7    25.4374117     0.0000006   
   sex                 1928794.0      1      1928794.0     0.7089226     0.4001657   
   bmi                 8105178.7      1      8105178.7     2.9790347     0.0849081   
   E4_Positive          711952.1      1       711952.1     0.2616759     0.6091753   
   Residuals         1.504569e+9    553      2720740.0                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                      
 ─────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE          df          t            p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+            -1184.7196    221.9542    553.0000    -5.337676       0.0000008   
              -    A+T-              680.9875    217.9379    553.0000     3.124686       0.0112397   
              -    A+T+             -358.1625    203.4856    553.0000    -1.760137       0.4736245   
   A-T+       -    A+T-             1865.7072    256.1965    553.0000     7.282330    < .0000001   
              -    A+T+              826.5571    233.0834    553.0000     3.546186       0.0025440   
   A+T-       -    A+T+            -1039.1501    228.0561    553.0000    -4.556555       0.0000384   
 ─────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(TREM2_pg_ml, na.rm = TRUE), Std=sd(TREM2_pg_ml, na.rm = TRUE),
            Max=max(TREM2_pg_ml, na.rm = TRUE), Min=min(TREM2_pg_ml, na.rm = TRUE))

3.5. C1q_AT

(C1q_A_T_plot <- ggplot(FC_thesis_m,
                          aes(x = A_N_cat, y = C1q_ng_ml, 
                              colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C1q (ng/mL)") +
    scale_y_continuous(breaks = seq(0,600, by = 100), limits = c(0,600)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 9 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 9 rows containing missing values (`geom_point()`).

ancova(formula = C1q_ng_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = C1q_ng_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C1q_ng_ml                                                                  
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p            
 ─────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat            292113.686      3      97371.229    30.9764403    < .0000001   
   Age                122688.844      1     122688.844    39.0306633    < .0000001   
   sex                 88145.268      1      88145.268    28.0414107     0.0000002   
   bmi                  9132.626      1       9132.626     2.9053372     0.0888515   
   E4_Positive          1107.666      1       1107.666     0.3523787     0.5530137   
   Residuals         1728867.980    550       3143.396                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                      
 ─────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE          df          t            p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+             -60.29980    7.632358    550.0000    -7.900547    < .0000001   
              -    A+T-              19.00204    7.416081    550.0000     2.562275       0.0639844   
              -    A+T+             -18.09463    6.936984    550.0000    -2.608429       0.0560591   
   A-T+       -    A+T-              79.30184    8.770084    550.0000     9.042313    < .0000001   
              -    A+T+              42.20517    7.981312    550.0000     5.287999       0.0000011   
   A+T-       -    A+T+             -37.09667    7.749536    550.0000    -4.786954       0.0000131   
 ─────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(C1q_ng_ml, na.rm = TRUE), Std=sd(C1q_ng_ml, na.rm = TRUE),
            Max=max(C1q_ng_ml, na.rm = TRUE), Min=min(C1q_ng_ml, na.rm = TRUE))

3.6. C3_AT

(C3_A_T_plot <- ggplot(FC_thesis_m,
                        aes(x = A_N_cat, y = C3_ng_ml, 
                            colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C3 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,20000, by = 5000), limits = c(0, 20000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 9 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 9 rows containing missing values (`geom_point()`).

ancova(formula = C3_ng_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = C3_ng_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C3_ng_ml                                                                  
 ────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p           
 ────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat           9.178480e+7      3    3.059493e+7     2.7914900    0.0398646   
   Age               1.517606e+8      1    1.517606e+8    13.8466735    0.0002188   
   sex               1.436253e+8      1    1.436253e+8    13.1044087    0.0003219   
   bmi               1.282461e+7      1    1.282461e+7     1.1701213    0.2798521   
   E4_Positive           8737387      1        8737387     0.7972015    0.3723233   
   Residuals         6.006120e+9    548    1.096007e+7                              
 ────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                        
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE          df          t              p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+           -1126.53868    445.0240    548.0000    -2.53141094       0.0698335   
              -    A+T-            -480.69268    440.4439    548.0000    -1.09138238       1.0000000   
              -    A+T+              33.89205    408.6471    548.0000     0.08293721       1.0000000   
   A-T+       -    A+T-             645.84600    515.9204    548.0000     1.25183255       1.0000000   
              -    A+T+            1160.43073    468.5420    548.0000     2.47668434       0.0813697   
   A+T-       -    A+T+             514.58473    459.2955    548.0000     1.12037843       1.0000000   
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(C3_ng_ml, na.rm = TRUE), Std=sd(C3_ng_ml, na.rm = TRUE),
            Max=max(C3_ng_ml, na.rm = TRUE), Min=min(C3_ng_ml, na.rm = TRUE))

3.7. C4_AT

(C4_A_T_plot <- ggplot(FC_thesis_m,
                       aes(x = A_N_cat, y = C4_ng_ml, 
                           colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C4 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,5000, by = 1000), limits = c(0, 5000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 15 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 15 rows containing missing values (`geom_point()`).

ancova(formula = C4_ng_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = C4_ng_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C4_ng_ml                                                                     
 ───────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square     F              p            
 ───────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat          5194540.5474      3    1731513.5158       7.737966     0.0000455   
   Age              2614395.7624      1    2614395.7624      11.683482     0.0006778   
   sex              7586443.8770      1    7586443.8770      33.903083    < .0000001   
   bmi              2263547.0864      1    2263547.0864      10.115573     0.0015540   
   E4_Positive          169.2551      1        169.2551    7.563848e-4     0.9780691   
   Residuals         1.217301e+8    544     223768.5521                                
 ───────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                      
 ─────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE          df          t            p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+            -261.12321    64.22089    544.0000    -4.066016       0.0003293   
              -    A+T-              70.65175    62.98037    544.0000     1.121806       1.0000000   
              -    A+T+             -70.35977    58.77583    544.0000    -1.197087       1.0000000   
   A-T+       -    A+T-             331.77496    74.24166    544.0000     4.468851       0.0000574   
              -    A+T+             190.76344    67.65704    544.0000     2.819565       0.0299050   
   A+T-       -    A+T+            -141.01152    65.88313    544.0000    -2.140328       0.1966336   
 ─────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(C4_ng_ml, na.rm = TRUE), Std=sd(C4_ng_ml, na.rm = TRUE),
            Max=max(C4_ng_ml, na.rm = TRUE), Min=min(C4_ng_ml, na.rm = TRUE))

3.8. FB_AT

(FB_A_T_plot <- ggplot(FC_thesis_m,
                       aes(x = A_N_cat, y = Factor_B_ng_ml, 
                           colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Factor B (ng/mL)") +
    scale_y_continuous(breaks = seq(0,2000, by = 500), limits = c(0, 2000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 14 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 14 rows containing missing values (`geom_point()`).

ancova(formula = Factor_B_ng_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = Factor_B_ng_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Factor_B_ng_ml                                                           
 ───────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F            p           
 ───────────────────────────────────────────────────────────────────────────────── 
   A_N_cat              417718.4      3      139239.47     2.832831    0.0377293   
   Age                  160875.0      1      160874.98     3.273006    0.0709783   
   sex                 1121152.5      1     1121152.51    22.809877    0.0000023   
   bmi                  644795.9      1      644795.89    13.118389    0.0003197   
   E4_Positive          109662.2      1      109662.16     2.231080    0.1358370   
   Residuals         2.683703e+7    546       49152.06                             
 ───────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                       
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE          df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+             -73.93245    29.90412    546.0000    -2.4723167       0.0823660   
              -    A+T-              19.61140    29.52044    546.0000     0.6643330       1.0000000   
              -    A+T+             -15.63960    27.37352    546.0000    -0.5713403       1.0000000   
   A-T+       -    A+T-              93.54385    34.58567    546.0000     2.7046998       0.0423001   
              -    A+T+              58.29285    31.20633    546.0000     1.8679813       0.3738006   
   A+T-       -    A+T+             -35.25100    30.76183    546.0000    -1.1459334       1.0000000   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(Factor_B_ng_ml, na.rm = TRUE), Std=sd(Factor_B_ng_ml, na.rm = TRUE),
            Max=max(Factor_B_ng_ml, na.rm = TRUE), Min=min(Factor_B_ng_ml, na.rm = TRUE))

3.9. FH_AT

(FH_A_T_plot <- ggplot(FC_thesis_m,
                       aes(x = A_N_cat, y = Factor_H_ng_ml, 
                           colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Factor H (ng/mL)") +
    scale_y_continuous(breaks = seq(0,2000, by = 500), limits = c(0, 2000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 11 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 11 rows containing missing values (`geom_point()`).

ancova(formula = Factor_H_ng_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = Factor_H_ng_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Factor_H_ng_ml                                                             
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p            
 ─────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat            1303156.12      3      434385.37    12.5751121    < .0000001   
   Age                 704472.05      1      704472.05    20.3939073     0.0000077   
   sex                1442818.12      1     1442818.12    41.7684407    < .0000001   
   bmi                 387713.31      1      387713.31    11.2239929     0.0008630   
   E4_Positive          16993.22      1       16993.22     0.4919403     0.4833603   
   Residuals         1.896425e+7    549       34543.26                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                       
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE          df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+            -137.07712    25.11910    549.0000    -5.4570874       0.0000004   
              -    A+T-              22.39103    24.59393    549.0000     0.9104292       1.0000000   
              -    A+T+             -35.08715    23.09596    549.0000    -1.5191898       0.7757423   
   A-T+       -    A+T-             159.46815    28.96439    549.0000     5.5056614       0.0000003   
              -    A+T+             101.98996    26.35928    549.0000     3.8692242       0.0007338   
   A+T-       -    A+T+             -57.47818    25.77966    549.0000    -2.2295942       0.1570685   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(Factor_H_ng_ml, na.rm = TRUE), Std=sd(Factor_H_ng_ml, na.rm = TRUE),
            Max=max(Factor_H_ng_ml, na.rm = TRUE), Min=min(Factor_H_ng_ml, na.rm = TRUE))

3.10. MIF_AT

(MIF_A_T_plot <- ggplot(FC_thesis_m,
                       aes(x = A_N_cat, y = MIF_pg_ml, 
                           colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "MIF (pg/mL)") +
    scale_y_continuous(breaks = seq(0,40000, by = 10000), limits = c(0, 40000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 5 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 5 rows containing missing values (`geom_point()`).

ancova(formula = MIF_pg_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = MIF_pg_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - MIF_pg_ml                                                                   
 ──────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F              p            
 ──────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat           2.308263e+9      3    7.694208e+8    83.94832651    < .0000001   
   Age               9.168965e+7      1    9.168965e+7    10.00387882     0.0016475   
   sex                 6438723.7      1      6438723.7     0.70250252     0.4023049   
   bmi                  595638.3      1       595638.3     0.06498763     0.7988741   
   E4_Positive         5420026.5      1      5420026.5     0.59135668     0.4422221   
   Residuals         5.086803e+9    555      9165410.1                                
 ──────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                       
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE          df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+            -5138.5102    404.3632    555.0000    -12.707661    < .0000001   
              -    A+T-              784.8591    400.0465    555.0000      1.961920       0.3016271   
              -    A+T+            -3459.0114    372.8119    555.0000     -9.278167    < .0000001   
   A-T+       -    A+T-             5923.3693    467.6787    555.0000     12.665468    < .0000001   
              -    A+T+             1679.4988    424.3034    555.0000      3.958250       0.0005119   
   A+T-       -    A+T+            -4243.8704    418.3905    555.0000    -10.143323    < .0000001   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(MIF_pg_ml, na.rm = TRUE), Std=sd(MIF_pg_ml, na.rm = TRUE),
            Max=max(MIF_pg_ml, na.rm = TRUE), Min=min(MIF_pg_ml, na.rm = TRUE))

3.11. TNFR1_AT

(TNFR1_A_T_plot <- ggplot(FC_thesis_m,
                        aes(x = A_N_cat, y = TNFR1_ng_ml, 
                            colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TNFR1 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,2.0, by = 0.5), limits = c(0, 2.0)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 7 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 7 rows containing missing values (`geom_point()`).

ancova(formula = TNFR1_ng_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = TNFR1_ng_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TNFR1_ng_ml                                                                
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p            
 ─────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat           3.646631901      3    1.215543967    73.2990299    < .0000001   
   Age               0.721807768      1    0.721807768    43.5260349    < .0000001   
   sex               0.019676374      1    0.019676374     1.1865133     0.2765093   
   bmi               0.007548949      1    0.007548949     0.4552124     0.5001525   
   E4_Positive       0.021691689      1    0.021691689     1.3080397     0.2532456   
   Residuals         9.154012961    552    0.016583357                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                         
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE            df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+           -0.21115012    0.01729863    552.0000    -12.206175    < .0000001   
              -    A+T-            0.06312776    0.01702940    552.0000      3.706987       0.0013854   
              -    A+T+           -0.07183501    0.01592110    552.0000     -4.511939       0.0000471   
   A-T+       -    A+T-            0.27427788    0.01995608    552.0000     13.744073    < .0000001   
              -    A+T+            0.13931511    0.01813478    552.0000      7.682206    < .0000001   
   A+T-       -    A+T+           -0.13496277    0.01783722    552.0000     -7.566356    < .0000001   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(TNFR1_ng_ml, na.rm = TRUE), Std=sd(TNFR1_ng_ml, na.rm = TRUE),
            Max=max(TNFR1_ng_ml, na.rm = TRUE), Min=min(TNFR1_ng_ml, na.rm = TRUE))

3.12. TNFR2_AT

(TNFR2_A_T_plot <- ggplot(FC_thesis_m,
                          aes(x = A_N_cat, y = TNFR2_ng_ml, 
                              colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TNFR2 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,4, by = 1), limits = c(0, 4)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 5 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 5 rows containing missing values (`geom_point()`).

ancova(formula = TNFR2_ng_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = TNFR2_ng_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TNFR2_ng_ml                                                                
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p            
 ─────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat           13.06104150      3     4.35368050    54.4331308    < .0000001   
   Age                4.31650811      1     4.31650811    53.9683725    < .0000001   
   sex                0.83879660      1     0.83879660    10.4872935     0.0012741   
   bmi                0.11696311      1     0.11696311     1.4623647     0.2270710   
   E4_Positive        0.01144535      1     0.01144535     0.1430988     0.7053648   
   Residuals         44.23014586    553     0.07998218                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                         
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE            df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+            -0.3879975    0.03786755    553.0000    -10.246176    < .0000001   
              -    A+T-             0.1075146    0.03761447    553.0000      2.858331       0.0265156   
              -    A+T+            -0.1949528    0.03494497    553.0000     -5.578850       0.0000002   
   A-T+       -    A+T-             0.4955121    0.04381503    553.0000     11.309182    < .0000001   
              -    A+T+             0.1930448    0.03965328    553.0000      4.868318       0.0000088   
   A+T-       -    A+T+            -0.3024674    0.03917350    553.0000     -7.721223    < .0000001   
 ────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(TNFR2_ng_ml, na.rm = TRUE), Std=sd(TNFR2_ng_ml, na.rm = TRUE),
            Max=max(TNFR2_ng_ml, na.rm = TRUE), Min=min(TNFR2_ng_ml, na.rm = TRUE))

3.13. ICAM1_AT

(ICAM1_A_T_plot <- ggplot(FC_thesis_m,
                          aes(x = A_N_cat, y = ICAM1_ng_mL, 
                              colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "ICAM1 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,8, by = 2), limits = c(0, 8)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 8 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 8 rows containing missing values (`geom_point()`).

ancova(formula = ICAM1_ng_mL ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = ICAM1_ng_mL ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - ICAM1_ng_mL                                                               
 ────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F            p            
 ────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat             51.355256      3     17.1184185    36.634494    < .0000001   
   Age                 12.945826      1     12.9458258    27.704883     0.0000002   
   sex                  6.566058      1      6.5660578    14.051777     0.0001967   
   bmi                  4.264535      1      4.2645347     9.126373     0.0026366   
   E4_Positive          1.895130      1      1.8951297     4.055697     0.0445090   
   Residuals          257.001782    550      0.4672760                              
 ────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                        
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE            df          t            p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+            -0.8444095    0.09282040    550.0000    -9.097240    < .0000001   
              -    A+T-             0.1030773    0.09034505    550.0000     1.140929       1.0000000   
              -    A+T+            -0.4141334    0.08433119    550.0000    -4.910797       0.0000072   
   A-T+       -    A+T-             0.9474868    0.10683788    550.0000     8.868454    < .0000001   
              -    A+T+             0.4302761    0.09737519    550.0000     4.418745       0.0000718   
   A+T-       -    A+T+            -0.5172107    0.09461961    550.0000    -5.466210       0.0000004   
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(ICAM1_ng_mL, na.rm = TRUE), Std=sd(ICAM1_ng_mL, na.rm = TRUE),
            Max=max(ICAM1_ng_mL, na.rm = TRUE), Min=min(ICAM1_ng_mL, na.rm = TRUE))

3.14. VCAM1_AT

(VCAM1_A_T_plot <- ggplot(FC_thesis_m,
                          aes(x = A_N_cat, y = VCAM1_ng_mL, 
                              colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "VCAM1 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,20, by = 5), limits = c(0, 20)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 10 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 10 rows containing missing values (`geom_point()`).

ancova(formula = VCAM1_ng_mL ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = VCAM1_ng_mL ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - VCAM1_ng_mL                                                               
 ────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F            p            
 ────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat            317.411966      3     105.803989    39.482390    < .0000001   
   Age                109.152263      1     109.152263    40.731850    < .0000001   
   sex                 49.125503      1      49.125503    18.331939     0.0000219   
   bmi                  4.733710      1       4.733710     1.766457     0.1843722   
   E4_Positive         10.449315      1      10.449315     3.899323     0.0488053   
   Residuals         1473.877184    550       2.679777                              
 ────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                       
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE           df          t            p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+            -2.0328349    0.2208468    550.0000    -9.204729    < .0000001   
              -    A+T-             0.5533835    0.2164406    550.0000     2.556745       0.0649981   
              -    A+T+            -0.4394425    0.2025179    550.0000    -2.169895       0.1826532   
   A-T+       -    A+T-             2.5862185    0.2551593    550.0000    10.135702    < .0000001   
              -    A+T+             1.5933924    0.2329813    550.0000     6.839143    < .0000001   
   A+T-       -    A+T+            -0.9928261    0.2269212    550.0000    -4.375203       0.0000871   
 ──────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(VCAM1_ng_mL, na.rm = TRUE), Std=sd(VCAM1_ng_mL, na.rm = TRUE),
            Max=max(VCAM1_ng_mL, na.rm = TRUE), Min=min(VCAM1_ng_mL, na.rm = TRUE))

3.15. CRP_AT

(CRP_A_T_plot <- ggplot(FC_thesis_m,
                          aes(x = A_N_cat, y = CRP_pg_ml, 
                              colour = A_N_cat, fill = A_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "CRP (pg/mL)") +
    scale_y_continuous(breaks = seq(0,50000, by = 12500), limits = c(0, 50000)) +
    scale_colour_manual(values = c("black","black", "black", "black")) +
    scale_fill_brewer(palette = "Accent") +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 18 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 18 rows containing missing values (`geom_point()`).

ancova(formula = CRP_pg_ml ~ A_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = CRP_pg_ml ~ A_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - CRP_pg_ml                                                                
 ───────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F            p           
 ───────────────────────────────────────────────────────────────────────────────── 
   A_N_cat          2.590924e +8      3    8.636413e+7     1.398154    0.2424422   
   Age              2.156456e +8      1    2.156456e+8     3.491101    0.0622339   
   sex              6.950520e +7      1    6.950520e+7     1.125224    0.2892645   
   bmi              1.496798e +9      1    1.496798e+9    24.231760    0.0000011   
   E4_Positive      9.126016e +8      1    9.126016e+8    14.774165    0.0001354   
   Residuals        3.378824e+10    547    6.177009e+7                             
 ───────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - A_N_cat                                                                        
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   A_N_cat         A_N_cat    Mean Difference    SE           df          t             p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   A-T-       -    A-T+            -2117.5409    1054.0482    547.0000    -2.0089601       0.2701933   
              -    A+T-             -778.3078    1046.6535    547.0000    -0.7436156       1.0000000   
              -    A+T+             -504.3118     972.0756    547.0000    -0.5187989       1.0000000   
   A-T+       -    A+T-             1339.2330    1217.0876    547.0000     1.1003588       1.0000000   
              -    A+T+             1613.2291    1101.3200    547.0000     1.4648142       0.8612768   
   A+T-       -    A+T+              273.9961    1090.1601    547.0000     0.2513356       1.0000000   
 ───────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(A_N_cat)%>% 
  summarise(Median=median(CRP_pg_ml, na.rm = TRUE), Std=sd(CRP_pg_ml, na.rm = TRUE),
            Max=max(CRP_pg_ml, na.rm = TRUE), Min=min(CRP_pg_ml, na.rm = TRUE))

4. Diagnosis scheme

4.1. YKL40_Diag

(YKL40_diag_plot <- ggplot(FC_thesis_m,
                          aes(x = Diag, y = YKL40_ng_ml, 
                              colour = Diag, fill = Diag)) +
   geom_boxplot() +
   geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
   labs(x = NULL, y = "YKL40 (ng/mL)") +
   scale_y_continuous(breaks = seq(0,1000, by = 250), limits = c(0,1000)) +
   scale_colour_manual(values = c("black", "black" )) + 
   scale_fill_manual(values = c("indianred1", "#1ca9c9")) +
   theme_bw() +
   theme(legend.position = "none",
         panel.grid.major = element_blank(), 
         panel.grid.minor = element_blank()))
Warning: Removed 9 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 9 rows containing missing values (`geom_point()`).

ancova(formula = YKL40_ng_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = YKL40_ng_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - YKL40_ng_ml                                                                   
 ────────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square     F               p            
 ────────────────────────────────────────────────────────────────────────────────────── 
   Diag               2178.25068      1      2178.25068      0.27879152     0.5977062   
   Age              939854.84656      1    939854.84656    120.29081958    < .0000001   
   sex                  80.68115      1        80.68115      0.01032628     0.9190965   
   bmi               10444.88970      1     10444.88970      1.33682807     0.2480934   
   E4_Positive       34990.98453      1     34990.98453      4.47845135     0.0347710   
   Residuals       4320693.23306    553      7813.18849                                 
 ────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                   
 ───────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE          df          t            p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────── 
   SCD     -    MCI            7.207481    13.65035    553.0000    0.5280071       0.5977062   
 ───────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(YKL40_ng_ml, na.rm = TRUE), Std=sd(YKL40_ng_ml, na.rm = TRUE),
            Max=max(YKL40_ng_ml, na.rm = TRUE), Min=min(YKL40_ng_ml, na.rm = TRUE))

4.2. Axl_Diag

(AXL_diag_plot <- ggplot(FC_thesis_m,
                        aes(x = Diag, y = AXL_ng_ml, 
                            colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "AXL (ng/mL)") +
    scale_y_continuous(breaks = seq(0,50, by = 10), limits = c(0,50)) +
    scale_colour_manual(values = c("black", "black" )) + 
    scale_fill_manual(values = c("indianred1", "#1ca9c9")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 6 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 6 rows containing missing values (`geom_point()`).

ancova(formula = AXL_ng_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = AXL_ng_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - AXL_ng_ml                                                                   
 ──────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square     F              p           
 ──────────────────────────────────────────────────────────────────────────────────── 
   Diag               0.02801677      1      0.02801677    9.370277e-4    0.9755908   
   Age              104.36977383      1    104.36977383    3.490671886    0.0622422   
   sex                0.18456852      1      0.18456852    0.006172938    0.9374045   
   bmi              110.56299606      1    110.56299606    3.697805675    0.0549954   
   E4_Positive        4.98603189      1      4.98603189    0.166759021    0.6831659   
   Residuals      16594.29083373    555     29.89962312                               
 ──────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                      
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE           df          t              p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD     -    MCI         -0.02586450    0.8449438    555.0000    -0.03061091       0.9755908   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(AXL_ng_ml, na.rm = TRUE), Std=sd(AXL_ng_ml, na.rm = TRUE),
            Max=max(AXL_ng_ml, na.rm = TRUE), Min=min(AXL_ng_ml, na.rm = TRUE))

4.3. Tyro3_Diag

(Tyro3_Diag_plot <- ggplot(FC_thesis_m,
                          aes(x = Diag, y = Tyro3_pg_ml, 
                              colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Tyro3 (pg/mL)") +
    scale_y_continuous(breaks = seq(0,8000, by = 2000), limits = c(0,8000)) +
    scale_colour_manual(values = c("black", "black" )) + 
    scale_fill_manual(values = c("indianred1", "#1ca9c9")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 7 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 7 rows containing missing values (`geom_point()`).

ancova(formula = Tyro3_pg_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = Tyro3_pg_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Tyro3_pg_ml                                                             
 ──────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F           p           
 ──────────────────────────────────────────────────────────────────────────────── 
   Diag                  4889414      1        4889414    4.833141    0.0283305   
   Age                   5460429      1        5460429    5.397583    0.0205258   
   sex                   1709778      1        1709778    1.690100    0.1941284   
   bmi                   4167860      1        4167860    4.119891    0.0428592   
   E4_Positive           2221818      1        2221818    2.196247    0.1389158   
   Residuals         5.604504e+8    554        1011643                            
 ──────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                   
 ───────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE          df          t            p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────── 
   SCD     -    MCI           -341.4658    155.3218    554.0000    -2.198441       0.0283305   
 ───────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(Tyro3_pg_ml, na.rm = TRUE), Std=sd(Tyro3_pg_ml, na.rm = TRUE),
            Max=max(Tyro3_pg_ml, na.rm = TRUE), Min=min(Tyro3_pg_ml, na.rm = TRUE))

4.4. TREM2_Diag

(TREM2_Diag_plot <- ggplot(FC_thesis_m,
                          aes(x = Diag, y = TREM2_pg_ml, 
                              colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TREM2 (pg/mL)") +
    scale_y_continuous(breaks = seq(0,15000, by = 3000), limits = c(0,15000)) +
    scale_colour_manual(values = c("black", "black" )) + 
    scale_fill_manual(values = c("indianred1", "#1ca9c9")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 9 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 9 rows containing missing values (`geom_point()`).

ancova(formula = TREM2_pg_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = TREM2_pg_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TREM2_pg_ml                                                                 
 ──────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F              p            
 ──────────────────────────────────────────────────────────────────────────────────── 
   Diag                 140373.3      1       140373.3     0.04698870     0.8284682   
   Age               1.036283e+8      1    1.036283e+8    34.68864302    < .0000001   
   sex                  238435.1      1       238435.1     0.07981400     0.7776550   
   bmi               1.911271e+7      1    1.911271e+7     6.39780654     0.0117019   
   E4_Positive         2146138.2      1      2146138.2     0.71840040     0.3970345   
   Residuals         1.657998e+9    555      2987384.5                                
 ──────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                    
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE          df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD     -    MCI           -57.85694    266.9062    555.0000    -0.2167688       0.8284682   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(TREM2_pg_ml, na.rm = TRUE), Std=sd(TREM2_pg_ml, na.rm = TRUE),
            Max=max(TREM2_pg_ml, na.rm = TRUE), Min=min(TREM2_pg_ml, na.rm = TRUE))

4.5. C1q_Diag

(C1q_Diag_plot <- ggplot(FC_thesis_m,
                        aes(x = Diag, y = C1q_ng_ml, 
                            colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C1q (ng/mL)") +
    scale_y_continuous(breaks = seq(0,600, by = 100), limits = c(0,600)) +
    scale_colour_manual(values = c("black", "black" )) + 
    scale_fill_manual(values = c("indianred1", "#1ca9c9")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 9 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 9 rows containing missing values (`geom_point()`).

ancova(formula = C1q_ng_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = C1q_ng_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C1q_ng_ml                                                                     
 ────────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square      F              p            
 ────────────────────────────────────────────────────────────────────────────────────── 
   Diag                 2.160122      1         2.160122    5.900046e-4     0.9806301   
   Age             204547.414699      1    204547.414699    55.86903408    < .0000001   
   sex              66064.575723      1     66064.575723    18.04454013     0.0000253   
   bmi                988.735651      1       988.735651     0.27005820     0.6035011   
   E4_Positive        191.448122      1       191.448122     0.05229116     0.8192081   
   Residuals      2020979.506500    552      3661.194758                                
 ────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                     
 ─────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE          df          t              p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD     -    MCI          -0.2294611    9.446726    552.0000    -0.02429001       0.9806301   
 ─────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(C1q_ng_ml, na.rm = TRUE), Std=sd(C1q_ng_ml, na.rm = TRUE),
            Max=max(C1q_ng_ml, na.rm = TRUE), Min=min(C1q_ng_ml, na.rm = TRUE))

4.6. C3_Diag

(C3_Diag_plot <- ggplot(FC_thesis_m,
                       aes(x = Diag, y = C3_ng_ml, 
                           colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C3 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,20000, by = 5000), limits = c(0, 20000)) +
    scale_colour_manual(values = c("black", "black" )) + 
    scale_fill_manual(values = c("indianred1", "#1ca9c9")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 9 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 9 rows containing missing values (`geom_point()`).

ancova(formula = C3_ng_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = C3_ng_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C3_ng_ml                                                                  
 ────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p           
 ────────────────────────────────────────────────────────────────────────────────── 
   Diag                  9643561      1        9643561     0.8711779    0.3510390   
   Age               1.824320e+8      1    1.824320e+8    16.4805048    0.0000563   
   sex               1.431722e+8      1    1.431722e+8    12.9338604    0.0003517   
   bmi               1.053531e+7      1    1.053531e+7     0.9517361    0.3297067   
   E4_Positive       1.250038e+7      1    1.250038e+7     1.1292561    0.2884004   
   Residuals         6.088261e+9    550    1.106957e+7                              
 ────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                    
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE          df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD     -    MCI           -484.2888    518.8610    550.0000    -0.9333691       0.3510390   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(C3_ng_ml, na.rm = TRUE), Std=sd(C3_ng_ml, na.rm = TRUE),
            Max=max(C3_ng_ml, na.rm = TRUE), Min=min(C3_ng_ml, na.rm = TRUE))

4.7. C4_Diag

(C4_Diag_plot <- ggplot(FC_thesis_m,
                       aes(x = Diag, y = C4_ng_ml, 
                           colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C4 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,4000, by = 1000), limits = c(0, 4000)) +
    scale_colour_manual(values = c("black", "black" )) + 
    scale_fill_manual(values = c("indianred1", "#1ca9c9")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 15 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 15 rows containing missing values (`geom_point()`).

ancova(formula = C4_ng_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = C4_ng_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C4_ng_ml                                                                    
 ──────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F              p            
 ──────────────────────────────────────────────────────────────────────────────────── 
   Diag                 8600.522      1       8600.522     0.03699994     0.8475367   
   Age               4107042.650      1    4107042.650    17.66873140     0.0000307   
   sex               6825419.216      1    6825419.216    29.36334222    < .0000001   
   bmi               1543558.285      1    1543558.285     6.64047566     0.0102301   
   E4_Positive         22674.709      1      22674.709     0.09754789     0.7549116   
   Residuals         1.269160e+8    546     232446.946                                
 ──────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                    
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE          df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD     -    MCI           -14.46478    75.19887    546.0000    -0.1923537       0.8475367   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(C4_ng_ml, na.rm = TRUE), Std=sd(C4_ng_ml, na.rm = TRUE),
            Max=max(C4_ng_ml, na.rm = TRUE), Min=min(C4_ng_ml, na.rm = TRUE))

4.8. FB_Diag

(FB_Diag_plot <- ggplot(FC_thesis_m,
                       aes(x = Diag, y = Factor_B_ng_ml, 
                           colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Factor B (ng/mL)") +
    scale_y_continuous(breaks = seq(0,2000, by = 500), limits = c(0, 2000)) +
    scale_colour_manual(values = c("black", "black" )) + 
    scale_fill_manual(values = c("indianred1", "#1ca9c9")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 14 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 14 rows containing missing values (`geom_point()`).

ancova(formula = Factor_B_ng_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = Factor_B_ng_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Factor_B_ng_ml                                                            
 ────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p           
 ────────────────────────────────────────────────────────────────────────────────── 
   Diag                 23907.63      1       23907.63     0.4811229    0.4882080   
   Age                 308384.32      1      308384.32     6.2060012    0.0130266   
   sex                1023771.56      1     1023771.56    20.6026279    0.0000070   
   bmi                 540369.11      1      540369.11    10.8745195    0.0010382   
   E4_Positive          95422.92      1       95422.92     1.9203141    0.1663857   
   Residuals         2.723084e+7    548       49691.31                              
 ────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                   
 ───────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE          df          t            p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────── 
   SCD     -    MCI            24.31950    35.06119    548.0000    0.6936302       0.4882080   
 ───────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(Factor_B_ng_ml, na.rm = TRUE), Std=sd(Factor_B_ng_ml, na.rm = TRUE),
            Max=max(Factor_B_ng_ml, na.rm = TRUE), Min=min(Factor_B_ng_ml, na.rm = TRUE))
NA

4.9. FH_Diag

(FH_Diag_plot <- ggplot(FC_thesis_m,
                       aes(x = Diag, y = Factor_H_ng_ml, 
                           colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Factor H (ng/mL)") +
    scale_y_continuous(breaks = seq(0,1500, by = 500), limits = c(0, 1500)) +
    scale_colour_manual(values = c("black", "black" )) + 
    scale_fill_manual(values = c("indianred1", "#1ca9c9")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 11 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 11 rows containing missing values (`geom_point()`).

ancova(formula = Factor_H_ng_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = Factor_H_ng_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Factor_H_ng_ml                                                              
 ──────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F              p            
 ──────────────────────────────────────────────────────────────────────────────────── 
   Diag                 5143.003      1       5143.003     0.13985578     0.7085683   
   Age               1150111.334      1    1150111.334    31.27544756    < .0000001   
   sex               1254748.212      1    1254748.212    34.12088095    < .0000001   
   bmi                228913.715      1     228913.715     6.22494420     0.0128879   
   E4_Positive          2407.201      1       2407.201     0.06546001     0.7981610   
   Residuals         2.026226e+7    551      36773.617                                
 ──────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                    
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE          df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD     -    MCI           -11.18613    29.91159    551.0000    -0.3739730       0.7085683   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(Factor_H_ng_ml, na.rm = TRUE), Std=sd(Factor_H_ng_ml, na.rm = TRUE),
            Max=max(Factor_H_ng_ml, na.rm = TRUE), Min=min(Factor_H_ng_ml, na.rm = TRUE))

4.10. MIF_Diag

(MIF_Diag_plot <- ggplot(FC_thesis_m,
                        aes(x = Diag, y = MIF_pg_ml, 
                            colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "MIF (pg/mL)") +
    scale_y_continuous(breaks = seq(0,30000, by = 5000), limits = c(0, 30000)) +
    scale_colour_manual(values = c("black", "black" )) + 
    scale_fill_manual(values = c("indianred1", "#1ca9c9")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 5 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 5 rows containing missing values (`geom_point()`).

ancova(formula = MIF_pg_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = MIF_pg_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - MIF_pg_ml                                                                  
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p            
 ─────────────────────────────────────────────────────────────────────────────────── 
   Diag                  9884501      1        9884501     0.7455020     0.3882757   
   Age               5.050644e+8      1    5.050644e+8    38.0926159    < .0000001   
   sex                   4778507      1        4778507     0.3604013     0.5485276   
   bmi               4.916344e+7      1    4.916344e+7     3.7079711     0.0546619   
   E4_Positive       5.439225e+7      1    5.439225e+7     4.1023348     0.0433004   
   Residuals         7.385181e+9    557    1.325885e+7                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                    
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE          df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD     -    MCI           -485.4564    562.2452    557.0000    -0.8634246       0.3882757   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(MIF_pg_ml, na.rm = TRUE), Std=sd(MIF_pg_ml, na.rm = TRUE),
            Max=max(MIF_pg_ml, na.rm = TRUE), Min=min(MIF_pg_ml, na.rm = TRUE))

4.11. TNFR1_Diag

(TNFR1_Diag_plot <- ggplot(FC_thesis_m,
                          aes(x = Diag, y = TNFR1_ng_ml, 
                              colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TNFR1 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,1.5, by = 0.5), limits = c(0, 1.5)) +
    scale_colour_manual(values = c("black", "black" )) + 
    scale_fill_manual(values = c("indianred1", "#1ca9c9")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 7 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 7 rows containing missing values (`geom_point()`).

ancova(formula = TNFR1_ng_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = TNFR1_ng_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TNFR1_ng_ml                                                                  
 ───────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F               p            
 ───────────────────────────────────────────────────────────────────────────────────── 
   Diag               0.06730994      1     0.06730994     2.928510519     0.0875875   
   Age                1.38125890      1     1.38125890    60.095602298    < .0000001   
   sex               2.367392e-4      1    2.367392e-4     0.010300015     0.9191990   
   bmi                0.02320891      1     0.02320891     1.009769589     0.3153967   
   E4_Positive       4.700320e-5      1    4.700320e-5     0.002045008     0.9639468   
   Residuals         12.73333492    554     0.02298436                                 
 ───────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                     
 ─────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE            df          t            p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD     -    MCI         -0.04006841    0.02341417    554.0000    -1.711289       0.0875875   
 ─────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(TNFR1_ng_ml, na.rm = TRUE), Std=sd(TNFR1_ng_ml, na.rm = TRUE),
            Max=max(TNFR1_ng_ml, na.rm = TRUE), Min=min(TNFR1_ng_ml, na.rm = TRUE))

4.12. TNFR2_Diag

(TNFR2_Diag_plot <- ggplot(FC_thesis_m,
                          aes(x = Diag, y = TNFR2_ng_ml, 
                              colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TNFR2 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,3, by = 1), limits = c(0, 3)) +
    scale_colour_manual(values = c("black", "black" )) + 
    scale_fill_manual(values = c("indianred1", "#1ca9c9")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 5 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 5 rows containing missing values (`geom_point()`).

ancova(formula = TNFR2_ng_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = TNFR2_ng_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TNFR2_ng_ml                                                                 
 ──────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F              p            
 ──────────────────────────────────────────────────────────────────────────────────── 
   Diag              0.008924975      1    0.008924975     0.08647286     0.7688199   
   Age               8.882838221      1    8.882838221    86.06460372    < .0000001   
   sex               0.347462617      1    0.347462617     3.36651773     0.0670693   
   bmi               0.010633942      1    0.010633942     0.10303081     0.7483432   
   E4_Positive       0.163969531      1    0.163969531     1.58867834     0.2080447   
   Residuals        57.282262388    555    0.103211284                                
 ──────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                      
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE            df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD     -    MCI         -0.01459129    0.04961967    555.0000    -0.2940627       0.7688199   
 ──────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(TNFR2_ng_ml, na.rm = TRUE), Std=sd(TNFR2_ng_ml, na.rm = TRUE),
            Max=max(TNFR2_ng_ml, na.rm = TRUE), Min=min(TNFR2_ng_ml, na.rm = TRUE))

4.13. ICAM1_Diag

(ICAM1_Diag_plot <- ggplot(FC_thesis_m,
                          aes(x = Diag, y = ICAM1_ng_mL, 
                              colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "ICAM1 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,6, by = 2), limits = c(0, 6)) +
    scale_colour_manual(values = c("black", "black" )) + 
    scale_fill_manual(values = c("indianred1", "#1ca9c9")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 8 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 8 rows containing missing values (`geom_point()`).

ancova(formula = ICAM1_ng_mL ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = ICAM1_ng_mL ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - ICAM1_ng_mL                                                                
 ─────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p            
 ─────────────────────────────────────────────────────────────────────────────────── 
   Diag               0.31004951      1     0.31004951     0.5555884     0.4563605   
   Age               28.56166520      1    28.56166520    51.1806310    < .0000001   
   sex                4.05172132      1     4.05172132     7.2604189     0.0072638   
   bmi                1.35951899      1     1.35951899     2.4361689     0.1191386   
   E4_Positive        0.05670832      1     0.05670832     0.1016176     0.7500176   
   Residuals        308.04698755    552     0.55805614                               
 ─────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                     
 ─────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE           df          t             p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD     -    MCI         -0.08599105    0.1153657    552.0000    -0.7453780       0.4563605   
 ─────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(ICAM1_ng_mL, na.rm = TRUE), Std=sd(ICAM1_ng_mL, na.rm = TRUE),
            Max=max(ICAM1_ng_mL, na.rm = TRUE), Min=min(ICAM1_ng_mL, na.rm = TRUE))

4.14. VCAM1_Diag

(VCAM1_Diag_plot <- ggplot(FC_thesis_m,
                          aes(x = Diag, y = VCAM1_ng_mL, 
                              colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "VCAM1 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,15, by = 5), limits = c(0, 15)) +
    scale_colour_manual(values = c("black", "black" )) + 
    scale_fill_manual(values = c("indianred1", "#1ca9c9")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 10 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 10 rows containing missing values (`geom_point()`).

ancova(formula = VCAM1_ng_mL ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = VCAM1_ng_mL ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - VCAM1_ng_mL                                                                   
 ────────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square     F               p            
 ────────────────────────────────────────────────────────────────────────────────────── 
   Diag               3.99222982      1      3.99222982     1.232985319     0.2673107   
   Age              167.18623494      1    167.18623494    51.634846254    < .0000001   
   sex               35.26317295      1     35.26317295    10.890899687     0.0010287   
   bmi                0.02548511      1      0.02548511     0.007870983     0.9293378   
   E4_Positive        7.15179805      1      7.15179805     2.208806203     0.1377957   
   Residuals       1787.29692025    552      3.23785674                                 
 ────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                    
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE           df          t            p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD     -    MCI          -0.3085378    0.2778622    552.0000    -1.110399       0.2673107   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(VCAM1_ng_mL, na.rm = TRUE), Std=sd(VCAM1_ng_mL, na.rm = TRUE),
            Max=max(VCAM1_ng_mL, na.rm = TRUE), Min=min(VCAM1_ng_mL, na.rm = TRUE))
NA

4.15. CRP_Diag

(CRP_Diag_plot <- ggplot(FC_thesis_m,
                        aes(x = Diag, y = CRP_pg_ml, 
                            colour = Diag, fill = Diag)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "CRP (pg/mL)") +
    scale_y_continuous(breaks = seq(0,50000, by = 12500), limits = c(0, 50000)) +
    scale_colour_manual(values = c("black", "black" )) + 
    scale_fill_manual(values = c("indianred1", "#1ca9c9")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 18 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 18 rows containing missing values (`geom_point()`).

ancova(formula = CRP_pg_ml ~ Diag + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = CRP_pg_ml ~ Diag,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - CRP_pg_ml                                                                 
 ────────────────────────────────────────────────────────────────────────────────── 
                  Sum of Squares    df     Mean Square    F             p           
 ────────────────────────────────────────────────────────────────────────────────── 
   Diag             2.098755e +7      1    2.098755e+7     0.3386248    0.5608629   
   Age              3.359206e +8      1    3.359206e+8     5.4199297    0.0202705   
   sex              6.388868e +7      1    6.388868e+7     1.0308155    0.3104144   
   bmi              1.425240e +9      1    1.425240e+9    22.9956190    0.0000021   
   E4_Positive      9.444540e +8      1    9.444540e+8    15.2383467    0.0001065   
   Residuals        3.402635e+10    549    6.197877e+7                              
 ────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - Diag                                                                    
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Diag         Diag    Mean Difference    SE          df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD     -    MCI           -714.2891    1227.481    549.0000    -0.5819148       0.5608629   
 ────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(Diag)%>% 
  summarise(Median=median(CRP_pg_ml, na.rm = TRUE), Std=sd(CRP_pg_ml, na.rm = TRUE),
            Max=max(CRP_pg_ml, na.rm = TRUE), Min=min(CRP_pg_ml, na.rm = TRUE))

5. Diagnosis+T scheme

5.1. YKL40_Diag+T

(YKL40_diag_T_plot <- ggplot(FC_thesis_m,
                           aes(x = clinical_N_cat, y = YKL40_ng_ml, 
                               colour = clinical_N_cat, fill = clinical_N_cat)) +
   geom_boxplot() +
   geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
   labs(x = NULL, y = "YKL40 (ng/mL)") +
   scale_y_continuous(breaks = seq(0,1000, by = 200), limits = c(0,800)) +
   scale_x_discrete(labels = c("SCD T-", "SCD T+", "MCI T-", "MCI T+")) +
   scale_colour_manual(values = c("black",'black', "black", "black")) +
   scale_fill_manual(values = c("lightblue", "darkorange3", 
                                "lightgreen", "coral")) +
   theme_bw() +
   theme(legend.position = "none",
         panel.grid.major = element_blank(), 
         panel.grid.minor = element_blank()))
Warning: Removed 9 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 9 rows containing missing values (`geom_point()`).

ancova(formula = YKL40_ng_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = YKL40_ng_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - YKL40_ng_ml                                                                      
 ───────────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square     F               p            
 ───────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat      676408.77563      3    225469.59188    34.069660125    < .0000001   
   Age                 462957.73400      1    462957.73400    69.955387413    < .0000001   
   sex                   5138.72489      1      5138.72489     0.776488789     0.3786014   
   bmi                     14.36535      1        14.36535     0.002170681     0.9628564   
   E4_Positive           2270.64126      1      2270.64126     0.343106027     0.5582817   
   Residuals          3646462.70811    551      6617.89965                                 
 ───────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE           df          t              p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD_T-            -    SCD_T+                  -46.60315    35.838428    551.0000     -1.3003682       1.0000000   
                     -    MCI_T-                   23.67505    13.540945    551.0000      1.7484047       0.4857053   
                     -    MCI_T+                  -56.62232    14.641930    551.0000     -3.8671354       0.0007396   
   SCD_T+            -    MCI_T-                   70.27820    33.806826    551.0000      2.0788169       0.2285775   
                     -    MCI_T+                  -10.01917    33.927170    551.0000     -0.2953141       1.0000000   
   MCI_T-            -    MCI_T+                  -80.29738     7.987080    551.0000    -10.0534089    < .0000001   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(YKL40_ng_ml, na.rm = TRUE), Std=sd(YKL40_ng_ml, na.rm = TRUE),
            Max=max(YKL40_ng_ml, na.rm = TRUE), Min=min(YKL40_ng_ml, na.rm = TRUE))
NA

5.2. Axl_Diag+T

(AXL_diag_T_plot <- ggplot(FC_thesis_m,
                         aes(x = clinical_N_cat, y = AXL_ng_ml, 
                             colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "AXL (ng/mL)") +
    scale_y_continuous(breaks = seq(0,50, by = 10), limits = c(0,50)) +
    scale_x_discrete(labels = c("SCD T-", "SCD T+", "MCI T-", "MCI T+")) +
    scale_colour_manual(values = c("black",'black', "black", "black")) +
    scale_fill_manual(values = c("lightblue", "darkorange3", 
                                 "lightgreen", "coral")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 6 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 6 rows containing missing values (`geom_point()`).

ancova(formula = AXL_ng_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = AXL_ng_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - AXL_ng_ml                                                                     
 ────────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F             p            
 ────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat        1977.57437      3      659.19146    24.9394025    < .0000001   
   Age                     16.83151      1       16.83151     0.6367920     0.4252174   
   sex                     29.29865      1       29.29865     1.1084652     0.2928756   
   bmi                     26.83254      1       26.83254     1.0151641     0.3141095   
   E4_Positive            106.65611      1      106.65611     4.0351549     0.0450472   
   Residuals            14616.74449    553       26.43173                               
 ────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE           df          t              p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD_T-            -    SCD_T+                 -3.7509932    2.2647858    553.0000    -1.65622429       0.5894620   
                     -    MCI_T-                  0.6808976    0.8558796    553.0000     0.79555304       1.0000000   
                     -    MCI_T+                 -3.6477524    0.9272126    553.0000    -3.93410561       0.0005648   
   SCD_T+            -    MCI_T-                  4.4318908    2.1364310    553.0000     2.07443672       0.2310048   
                     -    MCI_T+                  0.1032408    2.1447097    553.0000     0.04813742       1.0000000   
   MCI_T-            -    MCI_T+                 -4.3286500    0.5063278    553.0000    -8.54910672    < .0000001   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(AXL_ng_ml, na.rm = TRUE), Std=sd(AXL_ng_ml, na.rm = TRUE),
            Max=max(AXL_ng_ml, na.rm = TRUE), Min=min(AXL_ng_ml, na.rm = TRUE))

5.3. Tyro3_Diag+T

(Tyro3_Diag_T_plot <- ggplot(FC_thesis_m,
                           aes(x = clinical_N_cat, y = Tyro3_pg_ml, 
                               colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Tyro3 (pg/mL)") +
    scale_y_continuous(breaks = seq(0,12000, by = 2000), limits = c(0,10000)) +
    scale_x_discrete(labels = c("SCD T-", "SCD T+", "MCI T-", "MCI T+")) +
    scale_colour_manual(values = c("black",'black', "black", "black")) +
    scale_fill_manual(values = c("lightblue", "darkorange3", 
                                 "lightgreen", "coral")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 7 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 7 rows containing missing values (`geom_point()`).

ancova(formula = Tyro3_pg_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = Tyro3_pg_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Tyro3_pg_ml                                                                   
 ────────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F             p            
 ────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat       9.133402e+7      3    3.044467e+7    35.4541245    < .0000001   
   Age                     334262.8      1       334262.8     0.3892633     0.5329446   
   sex                     100838.3      1       100838.3     0.1174305     0.7319687   
   bmi                     720390.5      1       720390.5     0.8389256     0.3601042   
   E4_Positive            1176916.3      1      1176916.3     1.3705695     0.2422192   
   Residuals            4.740057e+8    552       858706.1                               
 ────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                              
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE           df          t            p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD_T-            -    SCD_T+                  -621.2965    408.23172    552.0000    -1.521921       0.7716087   
                     -    MCI_T-                  -166.2112    154.26957    552.0000    -1.077407       1.0000000   
                     -    MCI_T+                 -1072.7427    166.71547    552.0000    -6.434572    < .0000001   
   SCD_T+            -    MCI_T-                   455.0854    385.08938    552.0000     1.181766       1.0000000   
                     -    MCI_T+                  -451.4461    386.38380    552.0000    -1.168388       1.0000000   
   MCI_T-            -    MCI_T+                  -906.5315     90.92031    552.0000    -9.970616    < .0000001   
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(Tyro3_pg_ml, na.rm = TRUE), Std=sd(Tyro3_pg_ml, na.rm = TRUE),
            Max=max(Tyro3_pg_ml, na.rm = TRUE), Min=min(Tyro3_pg_ml, na.rm = TRUE))

5.4. TREM2_Diag+T

(TREM2_Diag_T_plot <- ggplot(FC_thesis_m,
                           aes(x = clinical_N_cat, y = TREM2_pg_ml, 
                               colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TREM2 (pg/mL)") +
    scale_y_continuous(breaks = seq(0,14000, by = 2000), limits = c(0,14000)) +
    scale_x_discrete(labels = c("SCD T-", "SCD T+", "MCI T-", "MCI T+")) +
    scale_colour_manual(values = c("black",'black', "black", "black")) +
    scale_fill_manual(values = c("lightblue", "darkorange3", 
                                 "lightgreen", "coral")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 9 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 10 rows containing missing values (`geom_point()`).

ancova(formula = TREM2_pg_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = TREM2_pg_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TREM2_pg_ml                                                                   
 ────────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F             p            
 ────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat       1.218727e+8      3    4.062422e+7    14.6232455    < .0000001   
   Age                  4.818147e+7      1    4.818147e+7    17.3435805     0.0000362   
   sex                      2993149      1        2993149     1.0774249     0.2997280   
   bmi                  1.115280e+7      1    1.115280e+7     4.0146035     0.0455952   
   E4_Positive              2468594      1        2468594     0.8886042     0.3462675   
   Residuals            1.536266e+9    553        2778058                               
 ────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                             
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE          df          t            p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD_T-            -    SCD_T+                  1223.8919    734.2606    553.0000     1.666836       0.5766796   
                     -    MCI_T-                   390.2147    277.4301    553.0000     1.406533       0.9607649   
                     -    MCI_T+                  -647.4559    300.0788    553.0000    -2.157620       0.1883241   
   SCD_T+            -    MCI_T-                  -833.6772    692.6232    553.0000    -1.203652       1.0000000   
                     -    MCI_T+                 -1871.3479    695.0550    553.0000    -2.692374       0.0438574   
   MCI_T-            -    MCI_T+                 -1037.6707    163.8291    553.0000    -6.333859    < .0000001   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(TREM2_pg_ml, na.rm = TRUE), Std=sd(TREM2_pg_ml, na.rm = TRUE),
            Max=max(TREM2_pg_ml, na.rm = TRUE), Min=min(TREM2_pg_ml, na.rm = TRUE))

5.5. C1q_Diag+T

(C1q_Diag_T_plot <- ggplot(FC_thesis_m,
                         aes(x = clinical_N_cat, y = C1q_ng_ml, 
                             colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C1q (ng/mL)") +
    scale_y_continuous(breaks = seq(0,600, by = 100), limits = c(0,600)) +
    scale_x_discrete(labels = c("SCD T-", "SCD T+", "MCI T-", "MCI T+")) +
    scale_colour_manual(values = c("black",'black', "black", "black")) +
    scale_fill_manual(values = c("lightblue", "darkorange3", 
                                 "lightgreen", "coral")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 9 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 9 rows containing missing values (`geom_point()`).

ancova(formula = C1q_ng_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = C1q_ng_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C1q_ng_ml                                                                    
 ───────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F            p            
 ───────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat        191116.144      3      63705.381    19.147833    < .0000001   
   Age                    91220.214      1      91220.214    27.417926     0.0000002   
   sex                    90567.525      1      90567.525    27.221748     0.0000003   
   bmi                     7304.208      1       7304.208     2.195415     0.1389946   
   E4_Positive            12907.342      1      12907.342     3.879541     0.0493793   
   Residuals            1829865.522    550       3327.028                              
 ───────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                               
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE           df          t             p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD_T-            -    SCD_T+                 -26.660567    27.528961    550.0000    -0.9684553       1.0000000   
                     -    MCI_T-                   8.702497     9.602253    550.0000     0.9062974       1.0000000   
                     -    MCI_T+                 -34.279227    10.398528    550.0000    -3.2965461       0.0062517   
   SCD_T+            -    MCI_T-                  35.363063    26.231667    550.0000     1.3481058       1.0000000   
                     -    MCI_T+                  -7.618660    26.295254    550.0000    -0.2897352       1.0000000   
   MCI_T-            -    MCI_T+                 -42.981723     5.693093    550.0000    -7.5498016    < .0000001   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(C1q_ng_ml, na.rm = TRUE), Std=sd(C1q_ng_ml, na.rm = TRUE),
            Max=max(C1q_ng_ml, na.rm = TRUE), Min=min(C1q_ng_ml, na.rm = TRUE))

5.6. C3_Diag+T

(C3_Diag_T_plot <- ggplot(FC_thesis_m,
                        aes(x = clinical_N_cat, y = C3_ng_ml, 
                            colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C3 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,20000, by = 2000), limits = c(0, 20000)) +
    scale_x_discrete(labels = c("SCD T-", "SCD T+", "MCI T-", "MCI T+")) +
    scale_colour_manual(values = c("black",'black', "black", "black")) +
    scale_fill_manual(values = c("lightblue", "darkorange3", 
                                 "lightgreen", "coral")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 9 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 9 rows containing missing values (`geom_point()`).

ancova(formula = C3_ng_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = C3_ng_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C3_ng_ml                                                                     
 ───────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F             p           
 ───────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat       2.189505e+7      3        7298351     0.6582439    0.5780339   
   Age                  1.498339e+8      1    1.498339e+8    13.5136382    0.0002601   
   sex                  1.507848e+8      1    1.507848e+8    13.5993965    0.0002488   
   bmi                  1.144152e+7      1    1.144152e+7     1.0319191    0.3101566   
   E4_Positive              6785434      1        6785434     0.6119835    0.4343799   
   Residuals            6.076010e+9    548    1.108761e+7                              
 ───────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                               
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE           df          t             p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD_T-            -    SCD_T+                   813.2021    1469.2142    548.0000     0.5534946       1.0000000   
                     -    MCI_T-                  -295.9628     560.6845    548.0000    -0.5278598       1.0000000   
                     -    MCI_T+                  -580.9119     604.3388    548.0000    -0.9612355       1.0000000   
   SCD_T+            -    MCI_T-                 -1109.1649    1383.9049    548.0000    -0.8014749       1.0000000   
                     -    MCI_T+                 -1394.1140    1388.7738    548.0000    -1.0038452       1.0000000   
   MCI_T-            -    MCI_T+                  -284.9491     326.9804    548.0000    -0.8714561       1.0000000   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(C3_ng_ml, na.rm = TRUE), Std=sd(C3_ng_ml, na.rm = TRUE),
            Max=max(C3_ng_ml, na.rm = TRUE), Min=min(C3_ng_ml, na.rm = TRUE))
NA

5.7. C4_Diag+T

(C4_Diag_T_plot <- ggplot(FC_thesis_m,
                        aes(x = clinical_N_cat, y = C4_ng_ml, 
                            colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "C4 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,5000, by = 500), limits = c(0, 4000)) +
    scale_x_discrete(labels = c("SCD T-", "SCD T+", "MCI T-", "MCI T+")) +
    scale_colour_manual(values = c("black",'black', "black", "black")) +
    scale_fill_manual(values = c("lightblue", "darkorange3", 
                                 "lightgreen", "coral")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 15 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 15 rows containing missing values (`geom_point()`).

ancova(formula = C4_ng_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = C4_ng_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - C4_ng_ml                                                                      
 ────────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F             p            
 ────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         3623282.7      3      1207760.9     5.3285866     0.0012641   
   Age                    2025844.2      1      2025844.2     8.9379333     0.0029194   
   sex                    7871388.0      1      7871388.0    34.7282089    < .0000001   
   bmi                    2053913.6      1      2053913.6     9.0617742     0.0027312   
   E4_Positive             138855.7      1       138855.7     0.6126251     0.4341417   
   Residuals            1.233014e+8    544       226656.9                               
 ────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                               
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE           df          t             p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD_T-            -    SCD_T+                  100.48312    210.13939    544.0000     0.4781737       1.0000000   
                     -    MCI_T-                   51.06770     80.16622    544.0000     0.6370227       1.0000000   
                     -    MCI_T+                 -134.64055     86.61141    544.0000    -1.5545358       0.7238293   
   SCD_T+            -    MCI_T-                  -49.41542    197.92972    544.0000    -0.2496615       1.0000000   
                     -    MCI_T+                 -235.12367    198.61980    544.0000    -1.1837877       1.0000000   
   MCI_T-            -    MCI_T+                 -185.70824     47.10848    544.0000    -3.9421401       0.0005478   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(C4_ng_ml, na.rm = TRUE), Std=sd(C4_ng_ml, na.rm = TRUE),
            Max=max(C4_ng_ml, na.rm = TRUE), Min=min(C4_ng_ml, na.rm = TRUE))

5.8. FB_Diag+T

(FB_Diag_T_plot <- ggplot(FC_thesis_m,
                        aes(x = clinical_N_cat, y = Factor_B_ng_ml, 
                            colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Factor B (ng/mL)") +
    scale_y_continuous(breaks = seq(0,2500, by = 500), limits = c(0, 2000)) +
    scale_x_discrete(labels = c("SCD T-", "SCD T+", "MCI T-", "MCI T+")) +
    scale_colour_manual(values = c("black",'black', "black", "black")) +
    scale_fill_manual(values = c("lightblue", "darkorange3", 
                                 "lightgreen", "coral")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 14 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 14 rows containing missing values (`geom_point()`).

ancova(formula = Factor_B_ng_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = Factor_B_ng_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Factor_B_ng_ml                                                              
 ──────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F            p           
 ──────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat          337916.6      3      112638.88     2.284847    0.0779273   
   Age                     147941.0      1      147941.03     3.000941    0.0837809   
   sex                    1150590.0      1     1150590.01    23.339382    0.0000018   
   bmi                     612887.4      1      612887.36    12.432241    0.0004575   
   E4_Positive             197294.9      1      197294.86     4.002069    0.0459391   
   Residuals            2.691683e+7    546       49298.22                             
 ──────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                              
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE          df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD_T-            -    SCD_T+                  63.053629    98.11009    546.0000     0.6426824       1.0000000   
                     -    MCI_T-                  47.987371    37.75634    546.0000     1.2709750       1.0000000   
                     -    MCI_T+                  -4.849798    40.65129    546.0000    -0.1193024       1.0000000   
   SCD_T+            -    MCI_T-                 -15.066258    92.30935    546.0000    -0.1632149       1.0000000   
                     -    MCI_T+                 -67.903427    92.58726    546.0000    -0.7333992       1.0000000   
   MCI_T-            -    MCI_T+                 -52.837169    21.90318    546.0000    -2.4123057       0.0970840   
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(Factor_B_ng_ml, na.rm = TRUE), Std=sd(Factor_B_ng_ml, na.rm = TRUE),
            Max=max(Factor_B_ng_ml, na.rm = TRUE), Min=min(Factor_B_ng_ml, na.rm = TRUE))

5.9. FH_Diag+T

(FH_Diag_T_plot <- ggplot(FC_thesis_m,
                        aes(x = clinical_N_cat, y = Factor_H_ng_ml, 
                            colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "Factor H (ng/mL)") +
    scale_y_continuous(breaks = seq(0,2000, by = 500), limits = c(0, 2000)) +
    scale_x_discrete(labels = c("SCD T-", "SCD T+", "MCI T-", "MCI T+")) +
    scale_colour_manual(values = c("black",'black', "black", "black")) +
    scale_fill_manual(values = c("lightblue", "darkorange3", 
                                 "lightgreen", "coral")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 11 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 11 rows containing missing values (`geom_point()`).

ancova(formula = Factor_H_ng_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = Factor_H_ng_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - Factor_H_ng_ml                                                               
 ───────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F            p            
 ───────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         779021.66      3      259673.89     7.315176     0.0000814   
   Age                    569803.37      1      569803.37    16.051718     0.0000701   
   sex                   1470142.07      1     1470142.07    41.414823    < .0000001   
   bmi                    348077.47      1      348077.47     9.805560     0.0018325   
   E4_Positive             88441.85      1       88441.85     2.491462     0.1150413   
   Residuals            1.948838e+7    549       35497.97                              
 ───────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                              
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE          df          t             p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD_T-            -    SCD_T+                 -44.191117    83.15478    549.0000    -0.5314321       1.0000000   
                     -    MCI_T-                   7.073125    31.71740    549.0000     0.2230046       1.0000000   
                     -    MCI_T+                 -79.736823    34.31485    549.0000    -2.3236824       0.1230405   
   SCD_T+            -    MCI_T-                  51.264242    78.30999    549.0000     0.6546322       1.0000000   
                     -    MCI_T+                 -35.545707    78.58893    549.0000    -0.4522992       1.0000000   
   MCI_T-            -    MCI_T+                 -86.809949    18.64182    549.0000    -4.6567325       0.0000242   
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(Factor_H_ng_ml, na.rm = TRUE), Std=sd(Factor_H_ng_ml, na.rm = TRUE),
            Max=max(Factor_H_ng_ml, na.rm = TRUE), Min=min(Factor_H_ng_ml, na.rm = TRUE))

5.10. MIF_Diag+T

(MIF_Diag_T_plot <- ggplot(FC_thesis_m,
                         aes(x = clinical_N_cat, y = MIF_pg_ml, 
                             colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "MIF (pg/mL)") +
    scale_y_continuous(breaks = seq(0,30000, by = 5000), limits = c(0, 30000)) +
    scale_x_discrete(labels = c("SCD T-", "SCD T+", "MCI T-", "MCI T+")) +
    scale_colour_manual(values = c("black",'black', "black", "black")) +
    scale_fill_manual(values = c("lightblue", "darkorange3", 
                                 "lightgreen", "coral")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 5 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 5 rows containing missing values (`geom_point()`).

ancova(formula = MIF_pg_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = MIF_pg_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - MIF_pg_ml                                                                      
 ─────────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F              p            
 ─────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat       2.142031e+9      3    7.140102e+8    75.43747582    < .0000001   
   Age                  5.498328e+7      1    5.498328e+7     5.80916068     0.0162671   
   sex                    5943659.4      1      5943659.4     0.62796674     0.4284407   
   bmi                     669239.7      1       669239.7     0.07070733     0.7904084   
   E4_Positive          3.191094e+7      1    3.191094e+7     3.37149398     0.0668683   
   Residuals            5.253034e+9    555      9464927.0                                
 ─────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE           df          t              p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD_T-            -    SCD_T+                -5261.69622    1355.2713    555.0000     -3.8823932       0.0006953   
                     -    MCI_T-                   80.72698     512.0856    555.0000      0.1576435       1.0000000   
                     -    MCI_T+                -4334.10080     553.2709    555.0000     -7.8335957    < .0000001   
   SCD_T+            -    MCI_T-                 5342.42319    1278.5130    555.0000      4.1786226       0.0002044   
                     -    MCI_T+                  927.59542    1282.8572    555.0000      0.7230699       1.0000000   
   MCI_T-            -    MCI_T+                -4414.82777     301.5173    555.0000    -14.6420380    < .0000001   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(MIF_pg_ml, na.rm = TRUE), Std=sd(MIF_pg_ml, na.rm = TRUE),
            Max=max(MIF_pg_ml, na.rm = TRUE), Min=min(MIF_pg_ml, na.rm = TRUE))

5.11. TNFR1_Diag+T

(TNFR1_Diag_T_plot <- ggplot(FC_thesis_m,
                           aes(x = clinical_N_cat, y = TNFR1_ng_ml, 
                               colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TNFR1 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,1.5, by = 0.5), limits = c(0, 1.5)) +
    scale_x_discrete(labels = c("SCD T-", "SCD T+", "MCI T-", "MCI T+")) +
    scale_colour_manual(values = c("black",'black', "black", "black")) +
    scale_fill_manual(values = c("lightblue", "darkorange3", 
                                 "lightgreen", "coral")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 7 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 7 rows containing missing values (`geom_point()`).

ancova(formula = TNFR1_ng_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = TNFR1_ng_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TNFR1_ng_ml                                                                   
 ────────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F             p            
 ────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat       2.503136092      3    0.834378697    44.7270356    < .0000001   
   Age                  0.406318190      1    0.406318190    21.7807672     0.0000038   
   sex                  0.022223111      1    0.022223111     1.1912742     0.2755488   
   bmi                  0.003024713      1    0.003024713     0.1621403     0.6873494   
   E4_Positive          0.189101173      1    0.189101173    10.1368059     0.0015353   
   Residuals           10.297508770    552    0.018654907                               
 ────────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                  
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE            df          t               p-bonferroni   
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD_T-            -    SCD_T+               -0.168037445    0.06016673    552.0000     -2.79286332       0.0324337   
                     -    MCI_T-               -0.019804296    0.02273510    552.0000     -0.87108887       1.0000000   
                     -    MCI_T+               -0.170227637    0.02460406    552.0000     -6.91868041    < .0000001   
   SCD_T+            -    MCI_T-                0.148233149    0.05675697    552.0000      2.61171726       0.0555241   
                     -    MCI_T+               -0.002190192    0.05695904    552.0000     -0.03845205       1.0000000   
   MCI_T-            -    MCI_T+               -0.150423341    0.01344958    552.0000    -11.18423762    < .0000001   
 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(TNFR1_ng_ml, na.rm = TRUE), Std=sd(TNFR1_ng_ml, na.rm = TRUE),
            Max=max(TNFR1_ng_ml, na.rm = TRUE), Min=min(TNFR1_ng_ml, na.rm = TRUE))
NA

5.12. TNFR2_Diag+T

(TNFR2_Diag_T_plot <- ggplot(FC_thesis_m,
                           aes(x = clinical_N_cat, y = TNFR2_ng_ml, 
                               colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "TNFR2 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,3, by = 1), limits = c(0, 3)) +
    scale_x_discrete(labels = c("SCD T-", "SCD T+", "MCI T-", "MCI T+")) +
    scale_colour_manual(values = c("black",'black', "black", "black")) +
    scale_fill_manual(values = c("lightblue", "darkorange3", 
                                 "lightgreen", "coral")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 5 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 5 rows containing missing values (`geom_point()`).

ancova(formula = TNFR2_ng_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = TNFR2_ng_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - TNFR2_ng_ml                                                                  
 ───────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F            p            
 ───────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat        10.7022603      3     3.56742011    42.344468    < .0000001   
   Age                    3.3647952      1     3.36479517    39.939356    < .0000001   
   sex                    0.8183835      1     0.81838348     9.714026     0.0019236   
   bmi                    0.1047269      1     0.10472693     1.243085     0.2653616   
   E4_Positive            0.2725944      1     0.27259445     3.235634     0.0725975   
   Residuals             46.5889270    553     0.08424761                              
 ───────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                 
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE            df          t              p-bonferroni   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD_T-            -    SCD_T+                -0.38144328    0.12786441    553.0000     -2.9831857       0.0178711   
                     -    MCI_T-                 0.02416267    0.04832385    553.0000      0.5000154       1.0000000   
                     -    MCI_T+                -0.28881112    0.05224244    553.0000     -5.5282853       0.0000003   
   SCD_T+            -    MCI_T-                 0.40560595    0.12062432    553.0000      3.3625553       0.0049540   
                     -    MCI_T+                 0.09263217    0.12103809    553.0000      0.7653142       1.0000000   
   MCI_T-            -    MCI_T+                -0.31297378    0.02851557    553.0000    -10.9755414    < .0000001   
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(TNFR2_ng_ml, na.rm = TRUE), Std=sd(TNFR2_ng_ml, na.rm = TRUE),
            Max=max(TNFR2_ng_ml, na.rm = TRUE), Min=min(TNFR2_ng_ml, na.rm = TRUE))

5.13. ICAM1_Diag+T

(ICAM1_Diag_T_plot <- ggplot(FC_thesis_m,
                           aes(x = clinical_N_cat, y = ICAM1_ng_mL, 
                               colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "ICAM1 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,7.5, by = 2.5), limits = c(0, 7.5)) +
    scale_x_discrete(labels = c("SCD T-", "SCD T+", "MCI T-", "MCI T+")) +
    scale_colour_manual(values = c("black",'black', "black", "black")) +
    scale_fill_manual(values = c("lightblue", "darkorange3", 
                                 "lightgreen", "coral")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 8 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 8 rows containing missing values (`geom_point()`).

ancova(formula = ICAM1_ng_mL ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = ICAM1_ng_mL ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - ICAM1_ng_mL                                                                  
 ───────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F            p            
 ───────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         42.013524      3     14.0045079    28.919343    < .0000001   
   Age                    10.248680      1     10.2486796    21.163548     0.0000052   
   sex                     7.107285      1      7.1072850    14.676561     0.0001423   
   bmi                     3.918148      1      3.9181481     8.090985     0.0046142   
   E4_Positive             4.245099      1      4.2450985     8.766139     0.0032012   
   Residuals             266.343513    550      0.4842609                              
 ───────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE            df          t             p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD_T-            -    SCD_T+                -0.45348496    0.30656733    550.0000    -1.4792345       0.8379010   
                     -    MCI_T-                 0.03165420    0.11583583    550.0000     0.2732678       1.0000000   
                     -    MCI_T+                -0.60065331    0.12538051    550.0000    -4.7906433       0.0000128   
   SCD_T+            -    MCI_T-                 0.48513916    0.28918036    550.0000     1.6776353       0.5639187   
                     -    MCI_T+                -0.14716835    0.29026137    550.0000    -0.5070201       1.0000000   
   MCI_T-            -    MCI_T+                -0.63230751    0.06863242    550.0000    -9.2129569    < .0000001   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(ICAM1_ng_mL, na.rm = TRUE), Std=sd(ICAM1_ng_mL, na.rm = TRUE),
            Max=max(ICAM1_ng_mL, na.rm = TRUE), Min=min(ICAM1_ng_mL, na.rm = TRUE))

5.14. VCAM1_Diag+T

(VCAM1_Diag_T_plot <- ggplot(FC_thesis_m,
                           aes(x = clinical_N_cat, y = VCAM1_ng_mL, 
                               colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "VCAM1 (ng/mL)") +
    scale_y_continuous(breaks = seq(0,20, by = 5), limits = c(0, 20)) +
    scale_x_discrete(labels = c("SCD T-", "SCD T+", "MCI T-", "MCI T+")) +
    scale_colour_manual(values = c("black",'black', "black", "black")) +
    scale_fill_manual(values = c("lightblue", "darkorange3", 
                                 "lightgreen", "coral")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 10 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 10 rows containing missing values (`geom_point()`).

ancova(formula = VCAM1_ng_mL ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = VCAM1_ng_mL ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - VCAM1_ng_mL                                                                  
 ───────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F            p            
 ───────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat        180.328676      3      60.109559    20.522078    < .0000001   
   Age                    70.960108      1      70.960108    24.226578     0.0000011   
   sex                    52.951232      1      52.951232    18.078145     0.0000249   
   bmi                     3.377784      1       3.377784     1.153213     0.2833484   
   E4_Positive            39.346281      1      39.346281    13.433262     0.0002712   
   Residuals            1610.960474    550       2.929019                              
 ───────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                               
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE           df          t             p-bonferroni   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD_T-            -    SCD_T+                -1.06751671    0.7539808    550.0000    -1.4158407       0.9443291   
                     -    MCI_T-                -0.08415319    0.2848856    550.0000    -0.2953929       1.0000000   
                     -    MCI_T+                -1.37819131    0.3081515    550.0000    -4.4724470       0.0000564   
   SCD_T+            -    MCI_T-                 0.98336352    0.7112106    550.0000     1.3826615       1.0000000   
                     -    MCI_T+                -0.31067460    0.7138794    550.0000    -0.4351920       1.0000000   
   MCI_T-            -    MCI_T+                -1.29403812    0.1685257    550.0000    -7.6785826    < .0000001   
 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(VCAM1_ng_mL, na.rm = TRUE), Std=sd(VCAM1_ng_mL, na.rm = TRUE),
            Max=max(VCAM1_ng_mL, na.rm = TRUE), Min=min(VCAM1_ng_mL, na.rm = TRUE))

5.15. CRP_Diag+T

(CRP_Diag_T_plot <- ggplot(FC_thesis_m,
                         aes(x = clinical_N_cat, y = CRP_pg_ml, 
                             colour = clinical_N_cat, fill = clinical_N_cat)) +
    geom_boxplot() +
    geom_jitter(pch = 18, size = 1, alpha = 0.8, width = 0.2) +
    labs(x = NULL, y = "CRP (pg/mL)") +
    scale_y_continuous(breaks = seq(0,50000, by = 12500), limits = c(0, 50000)) +
    scale_x_discrete(labels = c("SCD T-", "SCD T+", "MCI T-", "MCI T+")) +
    scale_colour_manual(values = c("black",'black', "black", "black")) +
    scale_fill_manual(values = c("lightblue", "darkorange3", 
                                 "lightgreen", "coral")) +
    theme_bw() +
    theme(legend.position = "none",
          panel.grid.major = element_blank(), 
          panel.grid.minor = element_blank()))
Warning: Removed 18 rows containing non-finite values (`stat_boxplot()`).
Warning: Removed 18 rows containing missing values (`geom_point()`).

ancova(formula = CRP_pg_ml ~ clinical_N_cat + 
         Age + 
         sex +
         bmi +
         E4_Positive,
       data = FC_thesis_m,
       postHoc = CRP_pg_ml ~ clinical_N_cat,
       postHocCorr = "bonf")

 ANCOVA

 ANCOVA - CRP_pg_ml                                                                    
 ───────────────────────────────────────────────────────────────────────────────────── 
                     Sum of Squares    df     Mean Square    F             p           
 ───────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat      9.905780e +7      3    3.301927e+7     0.5320311    0.6604731   
   Age                 2.156296e +8      1    2.156296e+8     3.4743853    0.0628614   
   sex                 7.621540e +7      1    7.621540e+7     1.2280395    0.2682757   
   bmi                 1.485933e +9      1    1.485933e+9    23.9424605    0.0000013   
   E4_Positive         1.017306e +9      1    1.017306e+9    16.3915919    0.0000590   
   Residuals           3.394828e+10    547    6.206266e+7                              
 ───────────────────────────────────────────────────────────────────────────────────── 


 POST HOC TESTS

 Post Hoc Comparisons - clinical_N_cat                                                                                
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   clinical_N_cat         clinical_N_cat    Mean Difference    SE           df          t              p-bonferroni   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   SCD_T-            -    SCD_T+                 -1220.0488    3476.7279    547.0000    -0.35091867       1.0000000   
                     -    MCI_T-                  -635.8976    1326.3703    547.0000    -0.47942691       1.0000000   
                     -    MCI_T+                 -1472.0645    1430.1943    547.0000    -1.02927586       1.0000000   
   SCD_T+            -    MCI_T-                   584.1512    3275.0280    547.0000     0.17836524       1.0000000   
                     -    MCI_T+                  -252.0158    3285.2057    547.0000    -0.07671232       1.0000000   
   MCI_T-            -    MCI_T+                  -836.1669     775.1875    547.0000    -1.07866404       1.0000000   
 ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 
   Note. Comparisons are based on estimated marginal means
FC_thesis_m%>%
  group_by(clinical_N_cat)%>% 
  summarise(Median=median(CRP_pg_ml, na.rm = TRUE), Std=sd(CRP_pg_ml, na.rm = TRUE),
            Max=max(CRP_pg_ml, na.rm = TRUE), Min=min(CRP_pg_ml, na.rm = TRUE))
LS0tCnRpdGxlOiAiRkFDRV9BbmFseXNpc19NYW51YWwiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCiMgMS4gTG9hZCBhbGwgbGlicmFyaWVzIHJlcXVpcmVkCgpgYGB7cn0KbGlicmFyeShyZWFkeGwpCmxpYnJhcnkodGlkeXZlcnNlKQoKCmxpYnJhcnkoJ2RwbHlyJykKbGlicmFyeSgncmVhZHhsJykKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KGRwbHlyKSAjIHJlcXVpcmVkIGJ5IGN1c3RvbSBmdW5jdGlvbiBvdXRsaWVyX3JlbW92YWwoKQpsaWJyYXJ5KGptdikgIyBhbmNvdmEoKQpsaWJyYXJ5KGdncGxvdDIpICMgZ2dwbG90KCkKbGlicmFyeShncmlkRXh0cmEpICMgZ3JpZC5hcnJhbmdlKCkKYGBgCgojIDIuIFByZSBhbmFseXNpczogRGF0YSBpbXBvcnQgYW5kIGNsZWFuaW5nCmBgYHtyfQptYW51YWxfRkFDRTwtIHJlYWRfZXhjZWwoJ0ZBQ0VfVGhlc2lzX01hbnVhbC54bHN4JykKbWFudWFsX0ZBQ0UgPC0gZGF0YS5mcmFtZShtYW51YWxfRkFDRSkKCmNvbG5hbWVzKG1hbnVhbF9GQUNFKQpGQ190aGVzaXNfbWFudWFsIDwtIHN1YnNldChtYW51YWxfRkFDRSwgc2VsZWN0ID0gYyhDU0YsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlLTDQwX25nX21MLCBzQXhsX25nX21MLCBUeXJvM19wZ19tTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc1RSRU0yX3BnX21MLCBDMXFfbmdfbUwsIEMzX25nX21MLCBDNF9uZ19tTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFjdG9yLkJfbmdfbUwsIEZhY3Rvci5IX25nX21MLCBNSUZfcGdfbUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRORlIxX25nX21MLCBUTkZSMl9uZ19tTCwgc0lDQU0xX25nX21MLCBzVkNBTTFfbmdfbUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENSUF9wZ19tTCwgQWdlX0xQLCBTZXhfMW1fMmYsIEJNSSwgQVBPRV9TdGF0dXMsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaWFnX0NTRiwgQV8xcG9zXzBuZWcsIFRfMXBvc18wbmVnLCBOXzFwb3NfMG5lZywgQVQsIEFOKSkKCkZDX3RoZXNpc19tYW51YWwkQV9OX2NhdCA8LSBmYWN0b3IoaWZlbHNlKEZDX3RoZXNpc19tYW51YWwkQU4gPT0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkEtVC0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoRkNfdGhlc2lzX21hbnVhbCRBTiA9PSAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkErVC0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKEZDX3RoZXNpc19tYW51YWwkQU4gPT0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQS1UKyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkErVCsiKSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIkEtVC0iLCAiQS1UKyIsICJBK1QtIiwgIkErVCsiKSkKdGFibGUoRkNfdGhlc2lzX21hbnVhbCRBX05fY2F0KQoKYGBgCgoKYGBge3J9CkZDX3RoZXNpc19tYW51YWwkRGlhZ19DU0YgPC0gZmFjdG9yKEZDX3RoZXNpc19tYW51YWwkRGlhZ19DU0YsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiU0NEIiwgIk1DSSIpKQp0YWJsZShGQ190aGVzaXNfbWFudWFsJEFfTl9jYXQpCgp0YWJsZShGQ190aGVzaXNfbWFudWFsJERpYWdfQ1NGKQp3aGljaChGQ190aGVzaXNfbWFudWFsJERpYWdfQ1NGID09ICJTQ0QiKQp3aGljaChGQ190aGVzaXNfbWFudWFsJERpYWdfQ1NGID09ICJTQ0QiICYgCiAgICAgICAgRkNfdGhlc2lzX21hbnVhbCROXzFwb3NfMG5lZyA9PSAwKQp3aGljaChGQ190aGVzaXNfbWFudWFsJERpYWdfQ1NGID09ICJTQ0QiICYgCiAgICAgICAgRkNfdGhlc2lzX21hbnVhbCROXzFwb3NfMG5lZyA9PSAxKQoKRkNfdGhlc2lzX21hbnVhbCRjbGluaWNhbF9OX2NhdCA8LSBmYWN0b3IoaWZlbHNlKEZDX3RoZXNpc19tYW51YWwkRGlhZ19DU0YgPT0gIlNDRCIgJiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQ190aGVzaXNfbWFudWFsJE5fMXBvc18wbmVnID09IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTQ0RfVC0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoRkNfdGhlc2lzX21hbnVhbCREaWFnX0NTRiA9PSAiU0NEIiAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQ190aGVzaXNfbWFudWFsJE5fMXBvc18wbmVnID09IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU0NEX1QrIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShGQ190aGVzaXNfbWFudWFsJERpYWdfQ1NGID09ICJNQ0kiICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQ190aGVzaXNfbWFudWFsJE5fMXBvc18wbmVnID09IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1DSV9ULSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKEZDX3RoZXNpc19tYW51YWwkRGlhZ19DU0YgPT0gIk1DSSIgJiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQ190aGVzaXNfbWFudWFsJE5fMXBvc18wbmVnID09IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNQ0lfVCsiLCdvdGhlcnMnKSkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygnU0NEX1QtJywgJ1NDRF9UKycsICJNQ0lfVC0iLCAiTUNJX1QrIikpCnRhYmxlKEZDX3RoZXNpc19tYW51YWwkY2xpbmljYWxfTl9jYXQpCmBgYAoKT3V0bGllciByZW1vdmFsIGZ1bmN0aW9uCkhpZ2hlciB0aGFuIG9yIGxlc3MgdGhhbiAzIHN0YW5kYXJkIGRldmlhdGlvbnMKCmBgYHtyfQpvdXRsaWVyX3JlbW92YWwgPC0gZnVuY3Rpb24oZGYpIHsKICBmaW5kLm91dGxpZXIgPC0gZnVuY3Rpb24oZGYpIHsKICAgIGlmKCFpcy5udW1lcmljKGRmKSkgewogICAgICBkZgogICAgfQogICAgZWxzZSB7CiAgICAgIGFyaXRoLm1lYW4gPC0gbWVhbihkZiwgbmEucm0gPSBUUlVFKQogICAgICBzdC5kZXYgPC0gc2QoZGYsIG5hLnJtID0gVFJVRSkKICAgICAgZGZbd2hpY2goZGYgPiAoYXJpdGgubWVhbiArIDMqc3QuZGV2KSB8IGRmIDwgKGFyaXRoLm1lYW4gLSAzKnN0LmRldikpXSA8LSBOQQogICAgICBkZgogICAgfQogIH0KICBkZiAlPiUgZHBseXI6Om11dGF0ZV9hbGwoZmluZC5vdXRsaWVyKQp9CmBgYAoKUmVtb3ZlZCBvdXRsaWVycwpgYGB7cn0KRkNfdGhlc2lzX21hbnVhbF9jbGVhbiA8LSBvdXRsaWVyX3JlbW92YWwoRkNfdGhlc2lzX21hbnVhbFsxOjE2XSkKYGBgCgpDaGVjayBmb3IgbWVyZ2Ugb3V0bGllciByZW1vdmVkIGNvbHVtbnMKYGBge3J9CmRpbShGQ190aGVzaXNfbWFudWFsX2NsZWFuKQpGQ190aGVzaXNfbSA8LSBtZXJnZShGQ190aGVzaXNfbWFudWFsX2NsZWFuLAogICAgICAgICAgICAgICAgICAgICBGQ190aGVzaXNfbWFudWFsW2MoMSwgMTc6bmNvbChGQ190aGVzaXNfbWFudWFsKSldLAogICAgICAgICAgICAgICAgICAgICAgICAgIGJ5ID0gIkNTRiIpCmRpbShGQ190aGVzaXNfbSkKYGBgCgpEaWQgbm90IE9taXQgTkFzCmBgYHtyfQp0YWJsZShGQ190aGVzaXNfbSRBX05fY2F0KQp0YWJsZShGQ190aGVzaXNfbSREaWFnKQp0YWJsZShGQ190aGVzaXNfbSRjbGluaWNhbF9OX2NhdCkKCmNvbG5hbWVzKEZDX3RoZXNpc19tKQpGQ190aGVzaXNfbSRCTUkgPC0gYXMubnVtZXJpYyhhcy5jaGFyYWN0ZXIoRkNfdGhlc2lzX20kQk1JKSkgCmNvbG5hbWVzKEZDX3RoZXNpc19tKVtjb2xuYW1lcyhGQ190aGVzaXNfbSkgPT0gJ0FnZV9MUCddIDwtICdBZ2UnCmNvbG5hbWVzKEZDX3RoZXNpc19tKVtjb2xuYW1lcyhGQ190aGVzaXNfbSkgPT0gJ1NleF8xbV8yZiddIDwtICdzZXgnCmNvbG5hbWVzKEZDX3RoZXNpc19tKVtjb2xuYW1lcyhGQ190aGVzaXNfbSkgPT0gJ0JNSSddIDwtICdibWknCmNvbG5hbWVzKEZDX3RoZXNpc19tKVtjb2xuYW1lcyhGQ190aGVzaXNfbSkgPT0gJ3NBeGxfbmdfbUwnXSA8LSAnQVhMX25nX21sJwpjb2xuYW1lcyhGQ190aGVzaXNfbSlbY29sbmFtZXMoRkNfdGhlc2lzX20pID09ICdzVFJFTTJfcGdfbUwnXSA8LSAnVFJFTTJfcGdfbWwnCmNvbG5hbWVzKEZDX3RoZXNpc19tKVtjb2xuYW1lcyhGQ190aGVzaXNfbSkgPT0gJ0ZhY3Rvci5CX25nX21MJ10gPC0gJ0ZhY3Rvcl9CX25nX21sJwpjb2xuYW1lcyhGQ190aGVzaXNfbSlbY29sbmFtZXMoRkNfdGhlc2lzX20pID09ICdGYWN0b3IuSF9uZ19tTCddIDwtICdGYWN0b3JfSF9uZ19tbCcKY29sbmFtZXMoRkNfdGhlc2lzX20pW2NvbG5hbWVzKEZDX3RoZXNpc19tKSA9PSAnc0lDQU0xX25nX21MJ10gPC0gJ0lDQU0xX25nX21MJwpjb2xuYW1lcyhGQ190aGVzaXNfbSlbY29sbmFtZXMoRkNfdGhlc2lzX20pID09ICdzVkNBTTFfbmdfbUwnXSA8LSAnVkNBTTFfbmdfbUwnCmNvbG5hbWVzKEZDX3RoZXNpc19tKVtjb2xuYW1lcyhGQ190aGVzaXNfbSkgPT0gJ1lLTDQwX25nX21MJ10gPC0gJ1lLTDQwX25nX21sJwpjb2xuYW1lcyhGQ190aGVzaXNfbSlbY29sbmFtZXMoRkNfdGhlc2lzX20pID09ICdDMXFfbmdfbUwnXSA8LSAnQzFxX25nX21sJwpjb2xuYW1lcyhGQ190aGVzaXNfbSlbY29sbmFtZXMoRkNfdGhlc2lzX20pID09ICdDM19uZ19tTCddIDwtICdDM19uZ19tbCcKY29sbmFtZXMoRkNfdGhlc2lzX20pW2NvbG5hbWVzKEZDX3RoZXNpc19tKSA9PSAnQzRfbmdfbUwnXSA8LSAnQzRfbmdfbWwnCmNvbG5hbWVzKEZDX3RoZXNpc19tKVtjb2xuYW1lcyhGQ190aGVzaXNfbSkgPT0gJ01JRl9wZ19tTCddIDwtICdNSUZfcGdfbWwnCmNvbG5hbWVzKEZDX3RoZXNpc19tKVtjb2xuYW1lcyhGQ190aGVzaXNfbSkgPT0gJ1RORlIxX25nX21MJ10gPC0gJ1RORlIxX25nX21sJwpjb2xuYW1lcyhGQ190aGVzaXNfbSlbY29sbmFtZXMoRkNfdGhlc2lzX20pID09ICdUTkZSMl9uZ19tTCddIDwtICdUTkZSMl9uZ19tbCcKY29sbmFtZXMoRkNfdGhlc2lzX20pW2NvbG5hbWVzKEZDX3RoZXNpc19tKSA9PSAnQ1JQX3BnX21MJ10gPC0gJ0NSUF9wZ19tbCcKY29sbmFtZXMoRkNfdGhlc2lzX20pW2NvbG5hbWVzKEZDX3RoZXNpc19tKSA9PSAnVHlybzNfcGdfbUwnXSA8LSAnVHlybzNfcGdfbWwnCmNvbG5hbWVzKEZDX3RoZXNpc19tKVtjb2xuYW1lcyhGQ190aGVzaXNfbSkgPT0gJ0FQT0VfU3RhdHVzJ10gPC0gJ0U0X1Bvc2l0aXZlJwpjb2xuYW1lcyhGQ190aGVzaXNfbSlbY29sbmFtZXMoRkNfdGhlc2lzX20pID09ICdEaWFnX0NTRiddIDwtICdEaWFnJwpjb2xuYW1lcyhGQ190aGVzaXNfbSkKYGBgCgpEYXRhIGlzIHJlYWR5IGZvciBhbmFseXNpcwoKIyAzLiBBVCBzY2hlbWUKIyMgMy4xLiBZS0w0MF9BVApgYGB7cn0KKFlLTDQwX0FfVF9wbG90IDwtIGdncGxvdChGQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IEFfTl9jYXQsIHkgPSBZS0w0MF9uZ19tbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IEFfTl9jYXQsIGZpbGwgPSBBX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiWUtMNDAgKG5nL21MKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwxMjAwLCBieSA9IDIwMCksIGxpbWl0cyA9IGMoMCwxMjAwKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiQWNjZW50IikgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBZS0w0MF9uZ19tbCB+IEFfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IEZDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IFlLTDQwX25nX21sIH4gQV9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRkNfdGhlc2lzX20lPiUKICBncm91cF9ieShBX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihZS0w0MF9uZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKFlLTDQwX25nX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KFlLTDQwX25nX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKFlLTDQwX25nX21sLCBuYS5ybSA9IFRSVUUpKQoKYGBgCgojIyAzLjIuIEFYTF9BVApgYGB7cn0KKEFYTF9BX1RfcGxvdCA8LSBnZ3Bsb3QoRkNfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBBX05fY2F0LCB5ID0gQVhMX25nX21sLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gQV9OX2NhdCwgZmlsbCA9IEFfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJBWEwgKG5nL21MKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCw1MCwgYnkgPSAxMCksIGxpbWl0cyA9IGMoMCw1MCkpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCJibGFjayIsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkFjY2VudCIpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKYW5jb3ZhKGZvcm11bGEgPSBBWExfbmdfbWwgfiBBX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBGQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBBWExfbmdfbWwgfiBBX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpGQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KEFfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKEFYTF9uZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKEFYTF9uZ19tbCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChBWExfbmdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oQVhMX25nX21sLCBuYS5ybSA9IFRSVUUpKQoKYGBgCgojIyAzLjMuIFR5cm8zX0FUCgpgYGB7cn0KKFR5cm8zX0FfVF9wbG90IDwtIGdncGxvdChGQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBBX05fY2F0LCB5ID0gVHlybzNfcGdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gQV9OX2NhdCwgZmlsbCA9IEFfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJUeXJvMyAocGcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDEyMDAwLCBieSA9IDIwMDApLCBsaW1pdHMgPSBjKDAsMTIwMDApKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJBY2NlbnQiKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCmFuY292YShmb3JtdWxhID0gVHlybzNfcGdfbWwgfiBBX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBGQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBUeXJvM19wZ19tbCB+IEFfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkZDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoQV9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oVHlybzNfcGdfbWwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChUeXJvM19wZ19tbCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChUeXJvM19wZ19tbCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihUeXJvM19wZ19tbCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyAzLjQuIFRSRU0yX0FUCgpgYGB7cn0KKFRSRU0yX0FfVF9wbG90IDwtIGdncGxvdChGQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IEFfTl9jYXQsIHkgPSBUUkVNMl9wZ19tbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IEFfTl9jYXQsIGZpbGwgPSBBX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiVFJFTTIgKHBnL21MKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwxNDAwMCwgYnkgPSAyMDAwKSwgbGltaXRzID0gYygwLDE0MDAwKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiQWNjZW50IikgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQphbmNvdmEoZm9ybXVsYSA9IFRSRU0yX3BnX21sIH4gQV9OX2NhdCArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRkNfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gVFJFTTJfcGdfbWwgfiBBX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpGQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KEFfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKFRSRU0yX3BnX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoVFJFTTJfcGdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoVFJFTTJfcGdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oVFJFTTJfcGdfbWwsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgMy41LiBDMXFfQVQKCmBgYHtyfQooQzFxX0FfVF9wbG90IDwtIGdncGxvdChGQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IEFfTl9jYXQsIHkgPSBDMXFfbmdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBBX05fY2F0LCBmaWxsID0gQV9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkMxcSAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDYwMCwgYnkgPSAxMDApLCBsaW1pdHMgPSBjKDAsNjAwKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiQWNjZW50IikgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQphbmNvdmEoZm9ybXVsYSA9IEMxcV9uZ19tbCB+IEFfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IEZDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IEMxcV9uZ19tbCB+IEFfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkZDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoQV9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oQzFxX25nX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoQzFxX25nX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KEMxcV9uZ19tbCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihDMXFfbmdfbWwsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgMy42LiBDM19BVApgYGB7cn0KKEMzX0FfVF9wbG90IDwtIGdncGxvdChGQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBBX05fY2F0LCB5ID0gQzNfbmdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gQV9OX2NhdCwgZmlsbCA9IEFfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJDMyAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDIwMDAwLCBieSA9IDUwMDApLCBsaW1pdHMgPSBjKDAsIDIwMDAwKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiQWNjZW50IikgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQphbmNvdmEoZm9ybXVsYSA9IEMzX25nX21sIH4gQV9OX2NhdCArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRkNfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gQzNfbmdfbWwgfiBBX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpGQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KEFfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKEMzX25nX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoQzNfbmdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoQzNfbmdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oQzNfbmdfbWwsIG5hLnJtID0gVFJVRSkpCmBgYAoKCiMjIDMuNy4gQzRfQVQKYGBge3J9CihDNF9BX1RfcGxvdCA8LSBnZ3Bsb3QoRkNfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBBX05fY2F0LCB5ID0gQzRfbmdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBBX05fY2F0LCBmaWxsID0gQV9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkM0IChuZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsNTAwMCwgYnkgPSAxMDAwKSwgbGltaXRzID0gYygwLCA1MDAwKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiQWNjZW50IikgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQphbmNvdmEoZm9ybXVsYSA9IEM0X25nX21sIH4gQV9OX2NhdCArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRkNfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gQzRfbmdfbWwgfiBBX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpGQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KEFfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKEM0X25nX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoQzRfbmdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoQzRfbmdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oQzRfbmdfbWwsIG5hLnJtID0gVFJVRSkpCmBgYAoKCiMjIDMuOC4gRkJfQVQKYGBge3J9CihGQl9BX1RfcGxvdCA8LSBnZ3Bsb3QoRkNfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBBX05fY2F0LCB5ID0gRmFjdG9yX0JfbmdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBBX05fY2F0LCBmaWxsID0gQV9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkZhY3RvciBCIChuZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsMjAwMCwgYnkgPSA1MDApLCBsaW1pdHMgPSBjKDAsIDIwMDApKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJBY2NlbnQiKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCmFuY292YShmb3JtdWxhID0gRmFjdG9yX0JfbmdfbWwgfiBBX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBGQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBGYWN0b3JfQl9uZ19tbCB+IEFfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkZDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoQV9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oRmFjdG9yX0JfbmdfbWwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChGYWN0b3JfQl9uZ19tbCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChGYWN0b3JfQl9uZ19tbCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihGYWN0b3JfQl9uZ19tbCwgbmEucm0gPSBUUlVFKSkKYGBgCgoKIyMgMy45LiBGSF9BVApgYGB7cn0KKEZIX0FfVF9wbG90IDwtIGdncGxvdChGQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IEFfTl9jYXQsIHkgPSBGYWN0b3JfSF9uZ19tbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IEFfTl9jYXQsIGZpbGwgPSBBX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiRmFjdG9yIEggKG5nL21MKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwyMDAwLCBieSA9IDUwMCksIGxpbWl0cyA9IGMoMCwgMjAwMCkpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCJibGFjayIsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkFjY2VudCIpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKYW5jb3ZhKGZvcm11bGEgPSBGYWN0b3JfSF9uZ19tbCB+IEFfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IEZDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IEZhY3Rvcl9IX25nX21sIH4gQV9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRkNfdGhlc2lzX20lPiUKICBncm91cF9ieShBX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihGYWN0b3JfSF9uZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKEZhY3Rvcl9IX25nX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KEZhY3Rvcl9IX25nX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKEZhY3Rvcl9IX25nX21sLCBuYS5ybSA9IFRSVUUpKQpgYGAKCgojIyAzLjEwLiBNSUZfQVQKYGBge3J9CihNSUZfQV9UX3Bsb3QgPC0gZ2dwbG90KEZDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gQV9OX2NhdCwgeSA9IE1JRl9wZ19tbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IEFfTl9jYXQsIGZpbGwgPSBBX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiTUlGIChwZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsNDAwMDAsIGJ5ID0gMTAwMDApLCBsaW1pdHMgPSBjKDAsIDQwMDAwKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiQWNjZW50IikgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQphbmNvdmEoZm9ybXVsYSA9IE1JRl9wZ19tbCB+IEFfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IEZDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IE1JRl9wZ19tbCB+IEFfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkZDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoQV9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oTUlGX3BnX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoTUlGX3BnX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KE1JRl9wZ19tbCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihNSUZfcGdfbWwsIG5hLnJtID0gVFJVRSkpCmBgYAoKCiMjIDMuMTEuIFRORlIxX0FUCmBgYHtyfQooVE5GUjFfQV9UX3Bsb3QgPC0gZ2dwbG90KEZDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IEFfTl9jYXQsIHkgPSBUTkZSMV9uZ19tbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBBX05fY2F0LCBmaWxsID0gQV9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIlRORlIxIChuZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsMi4wLCBieSA9IDAuNSksIGxpbWl0cyA9IGMoMCwgMi4wKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsImJsYWNrIiwgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiQWNjZW50IikgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQphbmNvdmEoZm9ybXVsYSA9IFRORlIxX25nX21sIH4gQV9OX2NhdCArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRkNfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gVE5GUjFfbmdfbWwgfiBBX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpGQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KEFfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKFRORlIxX25nX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoVE5GUjFfbmdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoVE5GUjFfbmdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oVE5GUjFfbmdfbWwsIG5hLnJtID0gVFJVRSkpCmBgYAoKCiMjIDMuMTIuIFRORlIyX0FUCmBgYHtyfQooVE5GUjJfQV9UX3Bsb3QgPC0gZ2dwbG90KEZDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gQV9OX2NhdCwgeSA9IFRORlIyX25nX21sLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gQV9OX2NhdCwgZmlsbCA9IEFfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJUTkZSMiAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDQsIGJ5ID0gMSksIGxpbWl0cyA9IGMoMCwgNCkpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCJibGFjayIsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkFjY2VudCIpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKYW5jb3ZhKGZvcm11bGEgPSBUTkZSMl9uZ19tbCB+IEFfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IEZDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IFRORlIyX25nX21sIH4gQV9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRkNfdGhlc2lzX20lPiUKICBncm91cF9ieShBX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihUTkZSMl9uZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKFRORlIyX25nX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KFRORlIyX25nX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKFRORlIyX25nX21sLCBuYS5ybSA9IFRSVUUpKQpgYGAKCgojIyAzLjEzLiBJQ0FNMV9BVApgYGB7cn0KKElDQU0xX0FfVF9wbG90IDwtIGdncGxvdChGQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IEFfTl9jYXQsIHkgPSBJQ0FNMV9uZ19tTCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IEFfTl9jYXQsIGZpbGwgPSBBX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiSUNBTTEgKG5nL21MKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCw4LCBieSA9IDIpLCBsaW1pdHMgPSBjKDAsIDgpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJBY2NlbnQiKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCmFuY292YShmb3JtdWxhID0gSUNBTTFfbmdfbUwgfiBBX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBGQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBJQ0FNMV9uZ19tTCB+IEFfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkZDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoQV9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oSUNBTTFfbmdfbUwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChJQ0FNMV9uZ19tTCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChJQ0FNMV9uZ19tTCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihJQ0FNMV9uZ19tTCwgbmEucm0gPSBUUlVFKSkKYGBgCgoKIyMgMy4xNC4gVkNBTTFfQVQKYGBge3J9CihWQ0FNMV9BX1RfcGxvdCA8LSBnZ3Bsb3QoRkNfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBBX05fY2F0LCB5ID0gVkNBTTFfbmdfbUwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBBX05fY2F0LCBmaWxsID0gQV9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIlZDQU0xIChuZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsMjAsIGJ5ID0gNSksIGxpbWl0cyA9IGMoMCwgMjApKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwiYmxhY2siLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJBY2NlbnQiKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCmFuY292YShmb3JtdWxhID0gVkNBTTFfbmdfbUwgfiBBX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBGQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBWQ0FNMV9uZ19tTCB+IEFfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkZDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoQV9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oVkNBTTFfbmdfbUwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChWQ0FNMV9uZ19tTCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChWQ0FNMV9uZ19tTCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihWQ0FNMV9uZ19tTCwgbmEucm0gPSBUUlVFKSkKYGBgCgoKIyMgMy4xNS4gQ1JQX0FUCmBgYHtyfQooQ1JQX0FfVF9wbG90IDwtIGdncGxvdChGQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IEFfTl9jYXQsIHkgPSBDUlBfcGdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBBX05fY2F0LCBmaWxsID0gQV9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkNSUCAocGcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDUwMDAwLCBieSA9IDEyNTAwKSwgbGltaXRzID0gYygwLCA1MDAwMCkpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCJibGFjayIsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkFjY2VudCIpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKYW5jb3ZhKGZvcm11bGEgPSBDUlBfcGdfbWwgfiBBX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBGQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBDUlBfcGdfbWwgfiBBX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpGQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KEFfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKENSUF9wZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKENSUF9wZ19tbCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChDUlBfcGdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oQ1JQX3BnX21sLCBuYS5ybSA9IFRSVUUpKQpgYGAKCgojIDQuIERpYWdub3NpcyBzY2hlbWUKIyMgNC4xLiBZS0w0MF9EaWFnCmBgYHtyfQooWUtMNDBfZGlhZ19wbG90IDwtIGdncGxvdChGQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IERpYWcsIHkgPSBZS0w0MF9uZ19tbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IERpYWcsIGZpbGwgPSBEaWFnKSkgKwogICBnZW9tX2JveHBsb3QoKSArCiAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiWUtMNDAgKG5nL21MKSIpICsKICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDEwMDAsIGJ5ID0gMjUwKSwgbGltaXRzID0gYygwLDEwMDApKSArCiAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiYmxhY2siICkpICsgCiAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImluZGlhbnJlZDEiLCAiIzFjYTljOSIpKSArCiAgIHRoZW1lX2J3KCkgKwogICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gWUtMNDBfbmdfbWwgfiBEaWFnICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBGQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBZS0w0MF9uZ19tbCB+IERpYWcsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkZDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoRGlhZyklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oWUtMNDBfbmdfbWwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChZS0w0MF9uZ19tbCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChZS0w0MF9uZ19tbCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihZS0w0MF9uZ19tbCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyA0LjIuIEF4bF9EaWFnCmBgYHtyfQooQVhMX2RpYWdfcGxvdCA8LSBnZ3Bsb3QoRkNfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gRGlhZywgeSA9IEFYTF9uZ19tbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBEaWFnLCBmaWxsID0gRGlhZykpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkFYTCAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDUwLCBieSA9IDEwKSwgbGltaXRzID0gYygwLDUwKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsICJibGFjayIgKSkgKyAKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImluZGlhbnJlZDEiLCAiIzFjYTljOSIpKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IEFYTF9uZ19tbCB+IERpYWcgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IEZDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IEFYTF9uZ19tbCB+IERpYWcsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkZDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoRGlhZyklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oQVhMX25nX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoQVhMX25nX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KEFYTF9uZ19tbCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihBWExfbmdfbWwsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgNC4zLiBUeXJvM19EaWFnCmBgYHtyfQooVHlybzNfRGlhZ19wbG90IDwtIGdncGxvdChGQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IERpYWcsIHkgPSBUeXJvM19wZ19tbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IERpYWcsIGZpbGwgPSBEaWFnKSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiVHlybzMgKHBnL21MKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCw4MDAwLCBieSA9IDIwMDApLCBsaW1pdHMgPSBjKDAsODAwMCkpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiYmxhY2siICkpICsgCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJpbmRpYW5yZWQxIiwgIiMxY2E5YzkiKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBUeXJvM19wZ19tbCB+IERpYWcgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IEZDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IFR5cm8zX3BnX21sIH4gRGlhZywKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRkNfdGhlc2lzX20lPiUKICBncm91cF9ieShEaWFnKSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihUeXJvM19wZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKFR5cm8zX3BnX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KFR5cm8zX3BnX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKFR5cm8zX3BnX21sLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDQuNC4gVFJFTTJfRGlhZwpgYGB7cn0KKFRSRU0yX0RpYWdfcGxvdCA8LSBnZ3Bsb3QoRkNfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBEaWFnLCB5ID0gVFJFTTJfcGdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBEaWFnLCBmaWxsID0gRGlhZykpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIlRSRU0yIChwZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsMTUwMDAsIGJ5ID0gMzAwMCksIGxpbWl0cyA9IGMoMCwxNTAwMCkpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiYmxhY2siICkpICsgCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJpbmRpYW5yZWQxIiwgIiMxY2E5YzkiKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBUUkVNMl9wZ19tbCB+IERpYWcgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IEZDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IFRSRU0yX3BnX21sIH4gRGlhZywKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRkNfdGhlc2lzX20lPiUKICBncm91cF9ieShEaWFnKSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihUUkVNMl9wZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKFRSRU0yX3BnX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KFRSRU0yX3BnX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKFRSRU0yX3BnX21sLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDQuNS4gQzFxX0RpYWcKYGBge3J9CihDMXFfRGlhZ19wbG90IDwtIGdncGxvdChGQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBEaWFnLCB5ID0gQzFxX25nX21sLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IERpYWcsIGZpbGwgPSBEaWFnKSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiQzFxIChuZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsNjAwLCBieSA9IDEwMCksIGxpbWl0cyA9IGMoMCw2MDApKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwgImJsYWNrIiApKSArIAogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaW5kaWFucmVkMSIsICIjMWNhOWM5IikpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gQzFxX25nX21sIH4gRGlhZyArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRkNfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gQzFxX25nX21sIH4gRGlhZywKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRkNfdGhlc2lzX20lPiUKICBncm91cF9ieShEaWFnKSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihDMXFfbmdfbWwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChDMXFfbmdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoQzFxX25nX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKEMxcV9uZ19tbCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyA0LjYuIEMzX0RpYWcKYGBge3J9CihDM19EaWFnX3Bsb3QgPC0gZ2dwbG90KEZDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gRGlhZywgeSA9IEMzX25nX21sLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gRGlhZywgZmlsbCA9IERpYWcpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJDMyAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDIwMDAwLCBieSA9IDUwMDApLCBsaW1pdHMgPSBjKDAsIDIwMDAwKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsICJibGFjayIgKSkgKyAKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImluZGlhbnJlZDEiLCAiIzFjYTljOSIpKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IEMzX25nX21sIH4gRGlhZyArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRkNfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gQzNfbmdfbWwgfiBEaWFnLAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpGQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KERpYWcpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKEMzX25nX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoQzNfbmdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoQzNfbmdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oQzNfbmdfbWwsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgNC43LiBDNF9EaWFnCmBgYHtyfQooQzRfRGlhZ19wbG90IDwtIGdncGxvdChGQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IERpYWcsIHkgPSBDNF9uZ19tbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IERpYWcsIGZpbGwgPSBEaWFnKSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiQzQgKG5nL21MKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCw0MDAwLCBieSA9IDEwMDApLCBsaW1pdHMgPSBjKDAsIDQwMDApKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwgImJsYWNrIiApKSArIAogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaW5kaWFucmVkMSIsICIjMWNhOWM5IikpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gQzRfbmdfbWwgfiBEaWFnICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBGQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBDNF9uZ19tbCB+IERpYWcsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkZDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoRGlhZyklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oQzRfbmdfbWwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChDNF9uZ19tbCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChDNF9uZ19tbCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihDNF9uZ19tbCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyA0LjguIEZCX0RpYWcKYGBge3J9CihGQl9EaWFnX3Bsb3QgPC0gZ2dwbG90KEZDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gRGlhZywgeSA9IEZhY3Rvcl9CX25nX21sLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gRGlhZywgZmlsbCA9IERpYWcpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJGYWN0b3IgQiAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDIwMDAsIGJ5ID0gNTAwKSwgbGltaXRzID0gYygwLCAyMDAwKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsICJibGFjayIgKSkgKyAKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImluZGlhbnJlZDEiLCAiIzFjYTljOSIpKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IEZhY3Rvcl9CX25nX21sIH4gRGlhZyArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRkNfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gRmFjdG9yX0JfbmdfbWwgfiBEaWFnLAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpGQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KERpYWcpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKEZhY3Rvcl9CX25nX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoRmFjdG9yX0JfbmdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoRmFjdG9yX0JfbmdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oRmFjdG9yX0JfbmdfbWwsIG5hLnJtID0gVFJVRSkpCgpgYGAKCiMjIDQuOS4gRkhfRGlhZwpgYGB7cn0KKEZIX0RpYWdfcGxvdCA8LSBnZ3Bsb3QoRkNfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBEaWFnLCB5ID0gRmFjdG9yX0hfbmdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBEaWFnLCBmaWxsID0gRGlhZykpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkZhY3RvciBIIChuZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsMTUwMCwgYnkgPSA1MDApLCBsaW1pdHMgPSBjKDAsIDE1MDApKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwgImJsYWNrIiApKSArIAogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaW5kaWFucmVkMSIsICIjMWNhOWM5IikpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCgphbmNvdmEoZm9ybXVsYSA9IEZhY3Rvcl9IX25nX21sIH4gRGlhZyArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRkNfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gRmFjdG9yX0hfbmdfbWwgfiBEaWFnLAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpGQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KERpYWcpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKEZhY3Rvcl9IX25nX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoRmFjdG9yX0hfbmdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoRmFjdG9yX0hfbmdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oRmFjdG9yX0hfbmdfbWwsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgNC4xMC4gTUlGX0RpYWcKYGBge3J9CihNSUZfRGlhZ19wbG90IDwtIGdncGxvdChGQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBEaWFnLCB5ID0gTUlGX3BnX21sLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IERpYWcsIGZpbGwgPSBEaWFnKSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiTUlGIChwZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsMzAwMDAsIGJ5ID0gNTAwMCksIGxpbWl0cyA9IGMoMCwgMzAwMDApKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwgImJsYWNrIiApKSArIAogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaW5kaWFucmVkMSIsICIjMWNhOWM5IikpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gTUlGX3BnX21sIH4gRGlhZyArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRkNfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gTUlGX3BnX21sIH4gRGlhZywKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRkNfdGhlc2lzX20lPiUKICBncm91cF9ieShEaWFnKSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihNSUZfcGdfbWwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChNSUZfcGdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoTUlGX3BnX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKE1JRl9wZ19tbCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyA0LjExLiBUTkZSMV9EaWFnCmBgYHtyfQooVE5GUjFfRGlhZ19wbG90IDwtIGdncGxvdChGQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IERpYWcsIHkgPSBUTkZSMV9uZ19tbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IERpYWcsIGZpbGwgPSBEaWFnKSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiVE5GUjEgKG5nL21MKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwxLjUsIGJ5ID0gMC41KSwgbGltaXRzID0gYygwLCAxLjUpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwgImJsYWNrIiApKSArIAogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaW5kaWFucmVkMSIsICIjMWNhOWM5IikpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gVE5GUjFfbmdfbWwgfiBEaWFnICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBGQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBUTkZSMV9uZ19tbCB+IERpYWcsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKRkNfdGhlc2lzX20lPiUKICBncm91cF9ieShEaWFnKSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihUTkZSMV9uZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKFRORlIxX25nX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KFRORlIxX25nX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKFRORlIxX25nX21sLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDQuMTIuIFRORlIyX0RpYWcKYGBge3J9CihUTkZSMl9EaWFnX3Bsb3QgPC0gZ2dwbG90KEZDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gRGlhZywgeSA9IFRORlIyX25nX21sLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gRGlhZywgZmlsbCA9IERpYWcpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJUTkZSMiAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDMsIGJ5ID0gMSksIGxpbWl0cyA9IGMoMCwgMykpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiYmxhY2siICkpICsgCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJpbmRpYW5yZWQxIiwgIiMxY2E5YzkiKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBUTkZSMl9uZ19tbCB+IERpYWcgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IEZDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IFRORlIyX25nX21sIH4gRGlhZywKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRkNfdGhlc2lzX20lPiUKICBncm91cF9ieShEaWFnKSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihUTkZSMl9uZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKFRORlIyX25nX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KFRORlIyX25nX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKFRORlIyX25nX21sLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDQuMTMuIElDQU0xX0RpYWcKYGBge3J9CihJQ0FNMV9EaWFnX3Bsb3QgPC0gZ2dwbG90KEZDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gRGlhZywgeSA9IElDQU0xX25nX21MLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gRGlhZywgZmlsbCA9IERpYWcpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJJQ0FNMSAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDYsIGJ5ID0gMiksIGxpbWl0cyA9IGMoMCwgNikpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCAiYmxhY2siICkpICsgCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJpbmRpYW5yZWQxIiwgIiMxY2E5YzkiKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQphbmNvdmEoZm9ybXVsYSA9IElDQU0xX25nX21MIH4gRGlhZyArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRkNfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gSUNBTTFfbmdfbUwgfiBEaWFnLAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpGQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KERpYWcpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKElDQU0xX25nX21MLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoSUNBTTFfbmdfbUwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoSUNBTTFfbmdfbUwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oSUNBTTFfbmdfbUwsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgNC4xNC4gVkNBTTFfRGlhZwpgYGB7cn0KKFZDQU0xX0RpYWdfcGxvdCA8LSBnZ3Bsb3QoRkNfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBEaWFnLCB5ID0gVkNBTTFfbmdfbUwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBEaWFnLCBmaWxsID0gRGlhZykpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIlZDQU0xIChuZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsMTUsIGJ5ID0gNSksIGxpbWl0cyA9IGMoMCwgMTUpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwgImJsYWNrIiApKSArIAogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaW5kaWFucmVkMSIsICIjMWNhOWM5IikpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKYW5jb3ZhKGZvcm11bGEgPSBWQ0FNMV9uZ19tTCB+IERpYWcgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IEZDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IFZDQU0xX25nX21MIH4gRGlhZywKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQpGQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KERpYWcpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKFZDQU0xX25nX21MLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoVkNBTTFfbmdfbUwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoVkNBTTFfbmdfbUwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oVkNBTTFfbmdfbUwsIG5hLnJtID0gVFJVRSkpCgpgYGAKCgojIyA0LjE1LiBDUlBfRGlhZwpgYGB7cn0KKENSUF9EaWFnX3Bsb3QgPC0gZ2dwbG90KEZDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IERpYWcsIHkgPSBDUlBfcGdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gRGlhZywgZmlsbCA9IERpYWcpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJDUlAgKHBnL21MKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCw1MDAwMCwgYnkgPSAxMjUwMCksIGxpbWl0cyA9IGMoMCwgNTAwMDApKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwgImJsYWNrIiApKSArIAogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiaW5kaWFucmVkMSIsICIjMWNhOWM5IikpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gQ1JQX3BnX21sIH4gRGlhZyArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRkNfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gQ1JQX3BnX21sIH4gRGlhZywKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRkNfdGhlc2lzX20lPiUKICBncm91cF9ieShEaWFnKSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihDUlBfcGdfbWwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChDUlBfcGdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoQ1JQX3BnX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKENSUF9wZ19tbCwgbmEucm0gPSBUUlVFKSkKYGBgCgoKCiMgNS4gRGlhZ25vc2lzK1Qgc2NoZW1lCiMjIDUuMS4gWUtMNDBfRGlhZytUCmBgYHtyfQooWUtMNDBfZGlhZ19UX3Bsb3QgPC0gZ2dwbG90KEZDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGNsaW5pY2FsX05fY2F0LCB5ID0gWUtMNDBfbmdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gY2xpbmljYWxfTl9jYXQsIGZpbGwgPSBjbGluaWNhbF9OX2NhdCkpICsKICAgZ2VvbV9ib3hwbG90KCkgKwogICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICBsYWJzKHggPSBOVUxMLCB5ID0gIllLTDQwIChuZy9tTCkiKSArCiAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwxMDAwLCBieSA9IDIwMCksIGxpbWl0cyA9IGMoMCw4MDApKSArCiAgIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygiU0NEIFQtIiwgIlNDRCBUKyIsICJNQ0kgVC0iLCAiTUNJIFQrIikpICsKICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsJ2JsYWNrJywgImJsYWNrIiwgImJsYWNrIikpICsKICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygibGlnaHRibHVlIiwgImRhcmtvcmFuZ2UzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpZ2h0Z3JlZW4iLCAiY29yYWwiKSkgKwogICB0aGVtZV9idygpICsKICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IFlLTDQwX25nX21sIH4gY2xpbmljYWxfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IEZDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IFlLTDQwX25nX21sIH4gY2xpbmljYWxfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkZDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoY2xpbmljYWxfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKFlLTDQwX25nX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoWUtMNDBfbmdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoWUtMNDBfbmdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oWUtMNDBfbmdfbWwsIG5hLnJtID0gVFJVRSkpCgpgYGAKCiMjIDUuMi4gQXhsX0RpYWcrVApgYGB7cn0KKEFYTF9kaWFnX1RfcGxvdCA8LSBnZ3Bsb3QoRkNfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGNsaW5pY2FsX05fY2F0LCB5ID0gQVhMX25nX21sLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBjbGluaWNhbF9OX2NhdCwgZmlsbCA9IGNsaW5pY2FsX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiQVhMIChuZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsNTAsIGJ5ID0gMTApLCBsaW1pdHMgPSBjKDAsNTApKSArCiAgICBzY2FsZV94X2Rpc2NyZXRlKGxhYmVscyA9IGMoIlNDRCBULSIsICJTQ0QgVCsiLCAiTUNJIFQtIiwgIk1DSSBUKyIpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwnYmxhY2snLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygibGlnaHRibHVlIiwgImRhcmtvcmFuZ2UzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaWdodGdyZWVuIiwgImNvcmFsIikpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gQVhMX25nX21sIH4gY2xpbmljYWxfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IEZDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IEFYTF9uZ19tbCB+IGNsaW5pY2FsX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCkZDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoY2xpbmljYWxfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKEFYTF9uZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKEFYTF9uZ19tbCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChBWExfbmdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oQVhMX25nX21sLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDUuMy4gVHlybzNfRGlhZytUCmBgYHtyfQooVHlybzNfRGlhZ19UX3Bsb3QgPC0gZ2dwbG90KEZDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGNsaW5pY2FsX05fY2F0LCB5ID0gVHlybzNfcGdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gY2xpbmljYWxfTl9jYXQsIGZpbGwgPSBjbGluaWNhbF9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIlR5cm8zIChwZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsMTIwMDAsIGJ5ID0gMjAwMCksIGxpbWl0cyA9IGMoMCwxMDAwMCkpICsKICAgIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygiU0NEIFQtIiwgIlNDRCBUKyIsICJNQ0kgVC0iLCAiTUNJIFQrIikpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCdibGFjaycsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJsaWdodGJsdWUiLCAiZGFya29yYW5nZTMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpZ2h0Z3JlZW4iLCAiY29yYWwiKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBUeXJvM19wZ19tbCB+IGNsaW5pY2FsX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBGQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBUeXJvM19wZ19tbCB+IGNsaW5pY2FsX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpGQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KGNsaW5pY2FsX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihUeXJvM19wZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKFR5cm8zX3BnX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KFR5cm8zX3BnX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKFR5cm8zX3BnX21sLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDUuNC4gVFJFTTJfRGlhZytUCmBgYHtyfQooVFJFTTJfRGlhZ19UX3Bsb3QgPC0gZ2dwbG90KEZDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGNsaW5pY2FsX05fY2F0LCB5ID0gVFJFTTJfcGdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gY2xpbmljYWxfTl9jYXQsIGZpbGwgPSBjbGluaWNhbF9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIlRSRU0yIChwZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsMTQwMDAsIGJ5ID0gMjAwMCksIGxpbWl0cyA9IGMoMCwxNDAwMCkpICsKICAgIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygiU0NEIFQtIiwgIlNDRCBUKyIsICJNQ0kgVC0iLCAiTUNJIFQrIikpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCdibGFjaycsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJsaWdodGJsdWUiLCAiZGFya29yYW5nZTMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpZ2h0Z3JlZW4iLCAiY29yYWwiKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBUUkVNMl9wZ19tbCB+IGNsaW5pY2FsX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBGQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBUUkVNMl9wZ19tbCB+IGNsaW5pY2FsX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpGQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KGNsaW5pY2FsX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihUUkVNMl9wZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKFRSRU0yX3BnX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KFRSRU0yX3BnX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKFRSRU0yX3BnX21sLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDUuNS4gQzFxX0RpYWcrVApgYGB7cn0KKEMxcV9EaWFnX1RfcGxvdCA8LSBnZ3Bsb3QoRkNfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGNsaW5pY2FsX05fY2F0LCB5ID0gQzFxX25nX21sLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBjbGluaWNhbF9OX2NhdCwgZmlsbCA9IGNsaW5pY2FsX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiQzFxIChuZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsNjAwLCBieSA9IDEwMCksIGxpbWl0cyA9IGMoMCw2MDApKSArCiAgICBzY2FsZV94X2Rpc2NyZXRlKGxhYmVscyA9IGMoIlNDRCBULSIsICJTQ0QgVCsiLCAiTUNJIFQtIiwgIk1DSSBUKyIpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwnYmxhY2snLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygibGlnaHRibHVlIiwgImRhcmtvcmFuZ2UzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaWdodGdyZWVuIiwgImNvcmFsIikpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gQzFxX25nX21sIH4gY2xpbmljYWxfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IEZDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IEMxcV9uZ19tbCB+IGNsaW5pY2FsX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpGQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KGNsaW5pY2FsX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihDMXFfbmdfbWwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChDMXFfbmdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoQzFxX25nX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKEMxcV9uZ19tbCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyA1LjYuIEMzX0RpYWcrVApgYGB7cn0KKEMzX0RpYWdfVF9wbG90IDwtIGdncGxvdChGQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBjbGluaWNhbF9OX2NhdCwgeSA9IEMzX25nX21sLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IGNsaW5pY2FsX05fY2F0LCBmaWxsID0gY2xpbmljYWxfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJDMyAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDIwMDAwLCBieSA9IDIwMDApLCBsaW1pdHMgPSBjKDAsIDIwMDAwKSkgKwogICAgc2NhbGVfeF9kaXNjcmV0ZShsYWJlbHMgPSBjKCJTQ0QgVC0iLCAiU0NEIFQrIiwgIk1DSSBULSIsICJNQ0kgVCsiKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsJ2JsYWNrJywgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImxpZ2h0Ymx1ZSIsICJkYXJrb3JhbmdlMyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlnaHRncmVlbiIsICJjb3JhbCIpKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IEMzX25nX21sIH4gY2xpbmljYWxfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IEZDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IEMzX25nX21sIH4gY2xpbmljYWxfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkZDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoY2xpbmljYWxfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKEMzX25nX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoQzNfbmdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoQzNfbmdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oQzNfbmdfbWwsIG5hLnJtID0gVFJVRSkpCgpgYGAKCiMjIDUuNy4gQzRfRGlhZytUCmBgYHtyfQooQzRfRGlhZ19UX3Bsb3QgPC0gZ2dwbG90KEZDX3RoZXNpc19tLAogICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGNsaW5pY2FsX05fY2F0LCB5ID0gQzRfbmdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gY2xpbmljYWxfTl9jYXQsIGZpbGwgPSBjbGluaWNhbF9OX2NhdCkpICsKICAgIGdlb21fYm94cGxvdCgpICsKICAgIGdlb21faml0dGVyKHBjaCA9IDE4LCBzaXplID0gMSwgYWxwaGEgPSAwLjgsIHdpZHRoID0gMC4yKSArCiAgICBsYWJzKHggPSBOVUxMLCB5ID0gIkM0IChuZy9tTCkiKSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsNTAwMCwgYnkgPSA1MDApLCBsaW1pdHMgPSBjKDAsIDQwMDApKSArCiAgICBzY2FsZV94X2Rpc2NyZXRlKGxhYmVscyA9IGMoIlNDRCBULSIsICJTQ0QgVCsiLCAiTUNJIFQtIiwgIk1DSSBUKyIpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwnYmxhY2snLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygibGlnaHRibHVlIiwgImRhcmtvcmFuZ2UzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaWdodGdyZWVuIiwgImNvcmFsIikpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gQzRfbmdfbWwgfiBjbGluaWNhbF9OX2NhdCArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRkNfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gQzRfbmdfbWwgfiBjbGluaWNhbF9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRkNfdGhlc2lzX20lPiUKICBncm91cF9ieShjbGluaWNhbF9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oQzRfbmdfbWwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChDNF9uZ19tbCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChDNF9uZ19tbCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihDNF9uZ19tbCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyA1LjguIEZCX0RpYWcrVApgYGB7cn0KKEZCX0RpYWdfVF9wbG90IDwtIGdncGxvdChGQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBjbGluaWNhbF9OX2NhdCwgeSA9IEZhY3Rvcl9CX25nX21sLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IGNsaW5pY2FsX05fY2F0LCBmaWxsID0gY2xpbmljYWxfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJGYWN0b3IgQiAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDI1MDAsIGJ5ID0gNTAwKSwgbGltaXRzID0gYygwLCAyMDAwKSkgKwogICAgc2NhbGVfeF9kaXNjcmV0ZShsYWJlbHMgPSBjKCJTQ0QgVC0iLCAiU0NEIFQrIiwgIk1DSSBULSIsICJNQ0kgVCsiKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsJ2JsYWNrJywgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImxpZ2h0Ymx1ZSIsICJkYXJrb3JhbmdlMyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlnaHRncmVlbiIsICJjb3JhbCIpKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCgphbmNvdmEoZm9ybXVsYSA9IEZhY3Rvcl9CX25nX21sIH4gY2xpbmljYWxfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IEZDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IEZhY3Rvcl9CX25nX21sIH4gY2xpbmljYWxfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkZDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoY2xpbmljYWxfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKEZhY3Rvcl9CX25nX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoRmFjdG9yX0JfbmdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoRmFjdG9yX0JfbmdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oRmFjdG9yX0JfbmdfbWwsIG5hLnJtID0gVFJVRSkpCmBgYAoKIyMgNS45LiBGSF9EaWFnK1QKYGBge3J9CihGSF9EaWFnX1RfcGxvdCA8LSBnZ3Bsb3QoRkNfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gY2xpbmljYWxfTl9jYXQsIHkgPSBGYWN0b3JfSF9uZ19tbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBjbGluaWNhbF9OX2NhdCwgZmlsbCA9IGNsaW5pY2FsX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiRmFjdG9yIEggKG5nL21MKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwyMDAwLCBieSA9IDUwMCksIGxpbWl0cyA9IGMoMCwgMjAwMCkpICsKICAgIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygiU0NEIFQtIiwgIlNDRCBUKyIsICJNQ0kgVC0iLCAiTUNJIFQrIikpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCdibGFjaycsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJsaWdodGJsdWUiLCAiZGFya29yYW5nZTMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpZ2h0Z3JlZW4iLCAiY29yYWwiKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKCmFuY292YShmb3JtdWxhID0gRmFjdG9yX0hfbmdfbWwgfiBjbGluaWNhbF9OX2NhdCArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRkNfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gRmFjdG9yX0hfbmdfbWwgfiBjbGluaWNhbF9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRkNfdGhlc2lzX20lPiUKICBncm91cF9ieShjbGluaWNhbF9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oRmFjdG9yX0hfbmdfbWwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChGYWN0b3JfSF9uZ19tbCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChGYWN0b3JfSF9uZ19tbCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihGYWN0b3JfSF9uZ19tbCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyA1LjEwLiBNSUZfRGlhZytUCmBgYHtyfQooTUlGX0RpYWdfVF9wbG90IDwtIGdncGxvdChGQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gY2xpbmljYWxfTl9jYXQsIHkgPSBNSUZfcGdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IGNsaW5pY2FsX05fY2F0LCBmaWxsID0gY2xpbmljYWxfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJNSUYgKHBnL21MKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwzMDAwMCwgYnkgPSA1MDAwKSwgbGltaXRzID0gYygwLCAzMDAwMCkpICsKICAgIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygiU0NEIFQtIiwgIlNDRCBUKyIsICJNQ0kgVC0iLCAiTUNJIFQrIikpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCdibGFjaycsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJsaWdodGJsdWUiLCAiZGFya29yYW5nZTMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpZ2h0Z3JlZW4iLCAiY29yYWwiKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBNSUZfcGdfbWwgfiBjbGluaWNhbF9OX2NhdCArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRkNfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gTUlGX3BnX21sIH4gY2xpbmljYWxfTl9jYXQsCiAgICAgICBwb3N0SG9jQ29yciA9ICJib25mIikKCkZDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoY2xpbmljYWxfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKE1JRl9wZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKE1JRl9wZ19tbCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChNSUZfcGdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oTUlGX3BnX21sLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDUuMTEuIFRORlIxX0RpYWcrVApgYGB7cn0KKFRORlIxX0RpYWdfVF9wbG90IDwtIGdncGxvdChGQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBjbGluaWNhbF9OX2NhdCwgeSA9IFRORlIxX25nX21sLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IGNsaW5pY2FsX05fY2F0LCBmaWxsID0gY2xpbmljYWxfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJUTkZSMSAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDEuNSwgYnkgPSAwLjUpLCBsaW1pdHMgPSBjKDAsIDEuNSkpICsKICAgIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygiU0NEIFQtIiwgIlNDRCBUKyIsICJNQ0kgVC0iLCAiTUNJIFQrIikpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCdibGFjaycsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJsaWdodGJsdWUiLCAiZGFya29yYW5nZTMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpZ2h0Z3JlZW4iLCAiY29yYWwiKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBUTkZSMV9uZ19tbCB+IGNsaW5pY2FsX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBGQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBUTkZSMV9uZ19tbCB+IGNsaW5pY2FsX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCkZDX3RoZXNpc19tJT4lCiAgZ3JvdXBfYnkoY2xpbmljYWxfTl9jYXQpJT4lIAogIHN1bW1hcmlzZShNZWRpYW49bWVkaWFuKFRORlIxX25nX21sLCBuYS5ybSA9IFRSVUUpLCBTdGQ9c2QoVE5GUjFfbmdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoVE5GUjFfbmdfbWwsIG5hLnJtID0gVFJVRSksIE1pbj1taW4oVE5GUjFfbmdfbWwsIG5hLnJtID0gVFJVRSkpCgpgYGAKCiMjIDUuMTIuIFRORlIyX0RpYWcrVApgYGB7cn0KKFRORlIyX0RpYWdfVF9wbG90IDwtIGdncGxvdChGQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBjbGluaWNhbF9OX2NhdCwgeSA9IFRORlIyX25nX21sLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IGNsaW5pY2FsX05fY2F0LCBmaWxsID0gY2xpbmljYWxfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJUTkZSMiAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDMsIGJ5ID0gMSksIGxpbWl0cyA9IGMoMCwgMykpICsKICAgIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygiU0NEIFQtIiwgIlNDRCBUKyIsICJNQ0kgVC0iLCAiTUNJIFQrIikpICsKICAgIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzID0gYygiYmxhY2siLCdibGFjaycsICJibGFjayIsICJibGFjayIpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJsaWdodGJsdWUiLCAiZGFya29yYW5nZTMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpZ2h0Z3JlZW4iLCAiY29yYWwiKSkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgICBwYW5lbC5ncmlkLm1ham9yID0gZWxlbWVudF9ibGFuaygpLCAKICAgICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpKQoKYW5jb3ZhKGZvcm11bGEgPSBUTkZSMl9uZ19tbCB+IGNsaW5pY2FsX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBGQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBUTkZSMl9uZ19tbCB+IGNsaW5pY2FsX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpGQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KGNsaW5pY2FsX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihUTkZSMl9uZ19tbCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKFRORlIyX25nX21sLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KFRORlIyX25nX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKFRORlIyX25nX21sLCBuYS5ybSA9IFRSVUUpKQpgYGAKCgojIyA1LjEzLiBJQ0FNMV9EaWFnK1QKYGBge3J9CihJQ0FNMV9EaWFnX1RfcGxvdCA8LSBnZ3Bsb3QoRkNfdGhlc2lzX20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gY2xpbmljYWxfTl9jYXQsIHkgPSBJQ0FNMV9uZ19tTCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBjbGluaWNhbF9OX2NhdCwgZmlsbCA9IGNsaW5pY2FsX05fY2F0KSkgKwogICAgZ2VvbV9ib3hwbG90KCkgKwogICAgZ2VvbV9qaXR0ZXIocGNoID0gMTgsIHNpemUgPSAxLCBhbHBoYSA9IDAuOCwgd2lkdGggPSAwLjIpICsKICAgIGxhYnMoeCA9IE5VTEwsIHkgPSAiSUNBTTEgKG5nL21MKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCw3LjUsIGJ5ID0gMi41KSwgbGltaXRzID0gYygwLCA3LjUpKSArCiAgICBzY2FsZV94X2Rpc2NyZXRlKGxhYmVscyA9IGMoIlNDRCBULSIsICJTQ0QgVCsiLCAiTUNJIFQtIiwgIk1DSSBUKyIpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwnYmxhY2snLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygibGlnaHRibHVlIiwgImRhcmtvcmFuZ2UzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaWdodGdyZWVuIiwgImNvcmFsIikpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKYW5jb3ZhKGZvcm11bGEgPSBJQ0FNMV9uZ19tTCB+IGNsaW5pY2FsX05fY2F0ICsgCiAgICAgICAgIEFnZSArIAogICAgICAgICBzZXggKwogICAgICAgICBibWkgKwogICAgICAgICBFNF9Qb3NpdGl2ZSwKICAgICAgIGRhdGEgPSBGQ190aGVzaXNfbSwKICAgICAgIHBvc3RIb2MgPSBJQ0FNMV9uZ19tTCB+IGNsaW5pY2FsX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpGQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KGNsaW5pY2FsX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihJQ0FNMV9uZ19tTCwgbmEucm0gPSBUUlVFKSwgU3RkPXNkKElDQU0xX25nX21MLCBuYS5ybSA9IFRSVUUpLAogICAgICAgICAgICBNYXg9bWF4KElDQU0xX25nX21MLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKElDQU0xX25nX21MLCBuYS5ybSA9IFRSVUUpKQpgYGAKCiMjIDUuMTQuIFZDQU0xX0RpYWcrVApgYGB7cn0KKFZDQU0xX0RpYWdfVF9wbG90IDwtIGdncGxvdChGQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBjbGluaWNhbF9OX2NhdCwgeSA9IFZDQU0xX25nX21MLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IGNsaW5pY2FsX05fY2F0LCBmaWxsID0gY2xpbmljYWxfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJWQ0FNMSAobmcvbUwpIikgKwogICAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDIwLCBieSA9IDUpLCBsaW1pdHMgPSBjKDAsIDIwKSkgKwogICAgc2NhbGVfeF9kaXNjcmV0ZShsYWJlbHMgPSBjKCJTQ0QgVC0iLCAiU0NEIFQrIiwgIk1DSSBULSIsICJNQ0kgVCsiKSkgKwogICAgc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCJibGFjayIsJ2JsYWNrJywgImJsYWNrIiwgImJsYWNrIikpICsKICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoImxpZ2h0Ymx1ZSIsICJkYXJrb3JhbmdlMyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlnaHRncmVlbiIsICJjb3JhbCIpKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICAgIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIAogICAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkpCmFuY292YShmb3JtdWxhID0gVkNBTTFfbmdfbUwgfiBjbGluaWNhbF9OX2NhdCArIAogICAgICAgICBBZ2UgKyAKICAgICAgICAgc2V4ICsKICAgICAgICAgYm1pICsKICAgICAgICAgRTRfUG9zaXRpdmUsCiAgICAgICBkYXRhID0gRkNfdGhlc2lzX20sCiAgICAgICBwb3N0SG9jID0gVkNBTTFfbmdfbUwgfiBjbGluaWNhbF9OX2NhdCwKICAgICAgIHBvc3RIb2NDb3JyID0gImJvbmYiKQoKRkNfdGhlc2lzX20lPiUKICBncm91cF9ieShjbGluaWNhbF9OX2NhdCklPiUgCiAgc3VtbWFyaXNlKE1lZGlhbj1tZWRpYW4oVkNBTTFfbmdfbUwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChWQ0FNMV9uZ19tTCwgbmEucm0gPSBUUlVFKSwKICAgICAgICAgICAgTWF4PW1heChWQ0FNMV9uZ19tTCwgbmEucm0gPSBUUlVFKSwgTWluPW1pbihWQ0FNMV9uZ19tTCwgbmEucm0gPSBUUlVFKSkKYGBgCgojIyA1LjE1LiBDUlBfRGlhZytUCmBgYHtyfQooQ1JQX0RpYWdfVF9wbG90IDwtIGdncGxvdChGQ190aGVzaXNfbSwKICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gY2xpbmljYWxfTl9jYXQsIHkgPSBDUlBfcGdfbWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IGNsaW5pY2FsX05fY2F0LCBmaWxsID0gY2xpbmljYWxfTl9jYXQpKSArCiAgICBnZW9tX2JveHBsb3QoKSArCiAgICBnZW9tX2ppdHRlcihwY2ggPSAxOCwgc2l6ZSA9IDEsIGFscGhhID0gMC44LCB3aWR0aCA9IDAuMikgKwogICAgbGFicyh4ID0gTlVMTCwgeSA9ICJDUlAgKHBnL21MKSIpICsKICAgIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCw1MDAwMCwgYnkgPSAxMjUwMCksIGxpbWl0cyA9IGMoMCwgNTAwMDApKSArCiAgICBzY2FsZV94X2Rpc2NyZXRlKGxhYmVscyA9IGMoIlNDRCBULSIsICJTQ0QgVCsiLCAiTUNJIFQtIiwgIk1DSSBUKyIpKSArCiAgICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoImJsYWNrIiwnYmxhY2snLCAiYmxhY2siLCAiYmxhY2siKSkgKwogICAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygibGlnaHRibHVlIiwgImRhcmtvcmFuZ2UzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaWdodGdyZWVuIiwgImNvcmFsIikpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgICAgICAgcGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICBwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSkKCmFuY292YShmb3JtdWxhID0gQ1JQX3BnX21sIH4gY2xpbmljYWxfTl9jYXQgKyAKICAgICAgICAgQWdlICsgCiAgICAgICAgIHNleCArCiAgICAgICAgIGJtaSArCiAgICAgICAgIEU0X1Bvc2l0aXZlLAogICAgICAgZGF0YSA9IEZDX3RoZXNpc19tLAogICAgICAgcG9zdEhvYyA9IENSUF9wZ19tbCB+IGNsaW5pY2FsX05fY2F0LAogICAgICAgcG9zdEhvY0NvcnIgPSAiYm9uZiIpCgpGQ190aGVzaXNfbSU+JQogIGdyb3VwX2J5KGNsaW5pY2FsX05fY2F0KSU+JSAKICBzdW1tYXJpc2UoTWVkaWFuPW1lZGlhbihDUlBfcGdfbWwsIG5hLnJtID0gVFJVRSksIFN0ZD1zZChDUlBfcGdfbWwsIG5hLnJtID0gVFJVRSksCiAgICAgICAgICAgIE1heD1tYXgoQ1JQX3BnX21sLCBuYS5ybSA9IFRSVUUpLCBNaW49bWluKENSUF9wZ19tbCwgbmEucm0gPSBUUlVFKSkKYGBgCgoKCgo=